diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 8a21ce69953a8..4e035831c1436 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -157,7 +157,7 @@
# ServiceOwners: @rpsqrd @edyoung
# PRLabel: %Batch
-/sdk/batch/ @wiboris @dpwatrous
+/sdk/batch/ @wiboris @dpwatrous @wanghoppe @skapur12 @cRui861
# ServiceLabel: %Batch
# ServiceOwners: @wiboris @dpwatrous
@@ -174,9 +174,6 @@
# ServiceLabel: %Bot Service
# ServiceOwners: @sgellock
-# ServiceLabel: %Cloud Shell
-# ServiceOwners: @maertendMSFT
-
# PRLabel: %Cognitive - Language
/sdk/cognitivelanguage/ @quentinRobinson @wangyuantao
@@ -211,10 +208,10 @@
# ServiceOwners: @dipidoo @longli0 @ShaoAnLin @lulululululu @leareai @Han-msft
# PRLabel: %Cognitive - Form Recognizer
-/sdk/documentintelligence/ @kinelski @pallavit @joseharriaga
+/sdk/documentintelligence/ @kinelski @joseharriaga
# PRLabel: %Cognitive - Form Recognizer
-/sdk/formrecognizer/ @kinelski @pallavit @joseharriaga
+/sdk/formrecognizer/ @kinelski @joseharriaga
# ServiceLabel: %Cognitive - Form Recognizer
# AzureSdkOwners: @kinelski
@@ -378,7 +375,7 @@
# ServiceOwners: @dkkapur
# PRLabel: %Container Registry
-/sdk/containerregistry/ @ShivangiReja @pallavit @annelo-msft @Azure/azsdk-acr
+/sdk/containerregistry/ @ShivangiReja @annelo-msft @Azure/azsdk-acr
# ServiceLabel: %Container Registry
# AzureSdkOwners: @ShivangiReja
@@ -553,7 +550,7 @@
# ServiceOwners: @Azure/azure-iot-cli-triage
# PRLabel: %KeyVault
-/sdk/keyvault/ @heaths @schaabs @Azure/azsdk-keyvault
+/sdk/keyvault/ @heaths @schaabs @JonathanCrd @jsquire @christothes
# ServiceLabel: %KeyVault
# AzureSdkOwners: @heaths
@@ -620,17 +617,17 @@
# ServiceOwners: @kpiteira
# PRLabel: %Monitor
-/sdk/monitor/ci.yml @nisha-bhatia @JoshLove-msft @pallavit @Azure/azure-sdk-write-monitor-data-plane
+/sdk/monitor/ci.yml @nisha-bhatia @JoshLove-msft @Azure/azure-sdk-write-monitor-data-plane
# PRLabel: %Monitor
-/sdk/monitor/Azure.Monitor.Ingestion/ @nisha-bhatia @JoshLove-msft @pallavit @Azure/azure-sdk-write-monitor-data-plane
+/sdk/monitor/Azure.Monitor.Ingestion/ @nisha-bhatia @JoshLove-msft @Azure/azure-sdk-write-monitor-data-plane
# ServiceLabel: %Monitor
# AzureSdkOwners: @nisha-bhatia
# ServiceOwners: @SameergMS @dadunl @AzMonEssential @AzmonAlerts @AzmonActionG @AzmonLogA
# PRLabel: %Monitor - Query
-/sdk/monitor/Azure.Monitor.Query/ @nisha-bhatia @JoshLove-msft @pallavit @Azure/azure-sdk-write-monitor-data-plane
+/sdk/monitor/Azure.Monitor.Query/ @nisha-bhatia @JoshLove-msft @Azure/azure-sdk-write-monitor-data-plane
# ServiceLabel: %Monitor - Query
# AzureSdkOwners: @nisha-bhatia
@@ -847,13 +844,13 @@
# ServiceOwners: @azureSQLGitHub
# PRLabel: %Storage
-/sdk/storage*/ @seanmcc-msft @amnguye @jaschrep-msft @schaabs @tg-msft
+/sdk/storage*/ @seanmcc-msft @amnguye @jaschrep-msft @schaabs @tg-msft @jalauzon-msft
# PRLabel: %Storage
-/sdk/storage/Azure.Storage.*/ @seanmcc-msft @amnguye @jaschrep-msft @schaabs @tg-msft
+/sdk/storage/Azure.Storage.*/ @seanmcc-msft @amnguye @jaschrep-msft @schaabs @tg-msft @jalauzon-msft
# PRLabel: %Storage
-/sdk/storage/Microsoft.Azure.WebJobs.*/ @seanmcc-msft @amnguye @jaschrep-msft @tg-msft @fabiocav @mathewc
+/sdk/storage/Microsoft.Azure.WebJobs.*/ @seanmcc-msft @amnguye @jaschrep-msft @tg-msft @fabiocav @mathewc @jalauzon-msft
# ServiceLabel: %Storage
# ServiceOwners: @xgithubtriage
@@ -971,6 +968,12 @@
# ServiceLabel: %Network - Front Door %Mgmt
# ServiceOwners: @ptnan7
+# PRLabel: %New Relic
+/sdk/newrelicobservability/Azure.ResourceManager.*/ @dipeshbhakat-microsoft @vipray-ms
+
+# ServiceLabel: %New Relic %Mgmt
+# ServiceOwners: @dipeshbhakat-microsoft @vipray-ms
+
# PRLabel: %Nginx
/sdk/nginx/Azure.ResourceManager.*/ @jamesfan1 @bangbingsyb @spencerofwiti
@@ -1005,6 +1008,7 @@
/eng/ @hallipr @weshaggard @benbp
/eng/common/ @Azure/azure-sdk-eng
/eng/mgmt/ @ArthurMa1978 @m-nash
+/.github/workflows/ @Azure/azure-sdk-eng
# Add owners for notifications for specific pipelines
/eng/pipelines/aggregate-reports.yml @jsquire
diff --git a/.github/CODEOWNERS_baseline_errors.txt b/.github/CODEOWNERS_baseline_errors.txt
index 721dc5c9e9c91..9373092cb5676 100644
--- a/.github/CODEOWNERS_baseline_errors.txt
+++ b/.github/CODEOWNERS_baseline_errors.txt
@@ -43,7 +43,6 @@ anand-rengasamy is an invalid user. Ensure the user exists, is public member of
alex-frankel is not a public member of Azure.
filizt is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
sgellock is not a public member of Azure.
-maertendMSFT is not a public member of Azure.
wangyuantao is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
bowgong is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
areddish is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
@@ -281,4 +280,4 @@ tmahmood-microsoft is not a public member of Azure.
Aviv-Yaniv is not a public member of Azure.
sakash279 is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
sivethe is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
-ThomasWeiss is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
\ No newline at end of file
+ThomasWeiss is an invalid user. Ensure the user exists, is public member of Azure and has write permissions.
diff --git a/.github/workflows/event-processor.yml b/.github/workflows/event-processor.yml
index 8bb1d3a1bd520..06092e395ad8c 100644
--- a/.github/workflows/event-processor.yml
+++ b/.github/workflows/event-processor.yml
@@ -58,7 +58,7 @@ jobs:
run: >
dotnet tool install
Azure.Sdk.Tools.GitHubEventProcessor
- --version 1.0.0-dev.20240610.2
+ --version 1.0.0-dev.20240708.1
--add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json
--global
shell: bash
@@ -114,7 +114,7 @@ jobs:
run: >
dotnet tool install
Azure.Sdk.Tools.GitHubEventProcessor
- --version 1.0.0-dev.20240610.2
+ --version 1.0.0-dev.20240708.1
--add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json
--global
shell: bash
diff --git a/.github/workflows/scheduled-event-processor.yml b/.github/workflows/scheduled-event-processor.yml
index db36be4e561d9..a20efcfcb9eb4 100644
--- a/.github/workflows/scheduled-event-processor.yml
+++ b/.github/workflows/scheduled-event-processor.yml
@@ -39,7 +39,7 @@ jobs:
run: >
dotnet tool install
Azure.Sdk.Tools.GitHubEventProcessor
- --version 1.0.0-dev.20240610.2
+ --version 1.0.0-dev.20240708.1
--add-source https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-net/nuget/v3/index.json
--global
shell: bash
diff --git a/.vscode/cspell.json b/.vscode/cspell.json
index ea400c192b54f..73ae7f41a7e75 100644
--- a/.vscode/cspell.json
+++ b/.vscode/cspell.json
@@ -217,7 +217,12 @@
{
"filename": "**/sdk/batch/**/*.cs",
"words": [
- "cifs"
+ "cifs",
+ "ocpdate",
+ "Reimage",
+ "Reimaging",
+ "reimaging",
+ "SSDLRS"
]
},
{
@@ -1322,7 +1327,11 @@
"Guage",
"Plex",
"Vstsrm",
- "Localizable"
+ "Localizable",
+ "Dapr",
+ "TLSAES",
+ "Unregistering",
+ "Diffie"
]
},
{
diff --git a/doc/ApiDocGeneration/Generate-Api-Docs.ps1 b/doc/ApiDocGeneration/Generate-Api-Docs.ps1
index 48405afdcd6db..f11f9118ffc68 100644
--- a/doc/ApiDocGeneration/Generate-Api-Docs.ps1
+++ b/doc/ApiDocGeneration/Generate-Api-Docs.ps1
@@ -14,9 +14,6 @@ The Name of the servicedirectory, usually the name of the service e.g. core
.PARAMETER ArtifactsDirectoryName
Used in the case where the package directory name is different from the package name. e.g in cognitiveservice packages
-.PARAMETER LibType
-Specifies if its a client or management library
-
.PARAMETER RepoRoot
The root of the Azure-SDK-for-Net Repo
@@ -32,7 +29,7 @@ Directory Name: PopImport: https://azuresdkartifacts.blob.core.windows.net/azure
RepoRoot\doc\ApiDocGeneration
#>
-
+
[CmdletBinding()]
Param (
[Parameter(Mandatory = $True)]
@@ -40,8 +37,6 @@ Param (
[Parameter(Mandatory = $True)]
$ServiceDirectory,
$ArtifactsDirectoryName,
- [ValidateSet('client', 'management')]
- $LibType = "client",
$RepoRoot = "${PSScriptRoot}/../..",
[Parameter(Mandatory = $True)]
$BinDirectory,
@@ -49,6 +44,10 @@ Param (
$ArtifactStagingDirectory
)
+function Log-Warning($message) {
+ Write-Host "##vso[task.logissue type=warning;]$message"
+}
+
function UpdateDocIndexFiles([string]$docPath, [string] $mainJsPath) {
# Update docfx.json
$docfxContent = Get-Content -Path $docPath -Raw
@@ -64,7 +63,9 @@ function UpdateDocIndexFiles([string]$docPath, [string] $mainJsPath) {
}
Write-Verbose "Name Reccuring paths with variable names"
-if ([System.String]::IsNullOrEmpty($ArtifactsDirectoryName)) {$ArtifactsDirectoryName = $ArtifactName}
+if ([System.String]::IsNullOrEmpty($ArtifactsDirectoryName)) {
+ $ArtifactsDirectoryName = $ArtifactName
+}
$PackageLocation = "${ServiceDirectory}/${ArtifactsDirectoryName}"
$FrameworkDir = "${BinDirectory}/${ArtifactsDirectoryName}/dll-docs"
$ApiDir = "${FrameworkDir}/my-api"
@@ -79,38 +80,38 @@ $DocFxTool = "${BinDirectory}/docfx/docfx.exe"
$DocCommonGenDir = "${RepoRoot}/eng/common/docgeneration"
$GACampaignId = "UA-62780441-41"
-if ($LibType -eq 'management') {
- $ArtifactName = $ArtifactName.Substring($ArtifactName.LastIndexOf('.Management') + 1)
-}
-
Write-Verbose "Package Location ${PackageLocation}"
Write-Verbose "Create Directories Required for Doc Generation"
+Write-Verbose "Creating ApiDir '$ApiDir'"
mkdir $ApiDir
+Write-Verbose "Creating ApiDependenciesDir '$ApiDependenciesDir'"
mkdir $ApiDependenciesDir
+Write-Verbose "Creating XmlOutDir '$XmlOutDir'"
mkdir $XmlOutDir
+Write-Verbose "Creating YamlOutDir '$YamlOutDir'"
mkdir $YamlOutDir
+Write-Verbose "Creating DocOutDir '$DocOutDir'"
mkdir $DocOutDir
-if ($LibType -eq 'client') {
- Write-Verbose "Build Packages for Doc Generation - Client"
- dotnet build "${RepoRoot}/eng/service.proj" /p:ServiceDirectory=$PackageLocation /p:IncludeTests=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:OutputPath=$ApiDir /p:TargetFramework=netstandard2.0
-
- Write-Verbose "Include client Dependencies"
- dotnet build "${RepoRoot}/eng/service.proj" /p:ServiceDirectory=$PackageLocation /p:IncludeTests=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:OutputPath=$ApiDependenciesDir /p:TargetFramework=netstandard2.0 /p:CopyLocalLockFileAssemblies=true
+Write-Verbose "Build Packages for Doc Generation - Client"
+Write-Verbose "dotnet build '${RepoRoot}/eng/service.proj' /p:ServiceDirectory=$ServiceDirectory /p:Project=$ArtifactsDirectoryName /p:IncludeTests=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:BuildInParallel=false /p:OutputPath=$ApiDir"
+dotnet build "${RepoRoot}/eng/service.proj" /p:ServiceDirectory=$ServiceDirectory /p:Project=$ArtifactsDirectoryName /p:IncludeTests=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:BuildInParallel=false /p:OutputPath=$ApiDir
+if ($LASTEXITCODE -ne 0) {
+ Log-Warning "Build Packages for Doc Generation - Client failed with $LASTEXITCODE please see output above"
+ exit 0
}
-if ($LibType -eq 'management') {
- # Management Package
- Write-Verbose "Build Packages for Doc Generation - Management"
- dotnet msbuild "${RepoRoot}/eng/mgmt.proj" /p:scope=$PackageLocation /p:OutputPath=$ApiDir -maxcpucount:1 -nodeReuse:false
-
- Write-Verbose "Include Management Dependencies"
- dotnet msbuild "${RepoRoot}/eng/mgmt.proj" /p:scope=$PackageLocation /p:OutputPath=$ApiDependenciesDir /p:CopyLocalLockFileAssemblies=true -maxcpucount:1 -nodeReuse:false
+Write-Verbose "Include Client Dependencies"
+Write-Verbose "'${RepoRoot}/eng/service.proj' /p:ServiceDirectory=$ServiceDirectory /p:Project=$ArtifactsDirectoryName /p:IncludeTests=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:BuildInParallel=false /p:OutputPath=$ApiDependenciesDir /p:CopyLocalLockFileAssemblies=true"
+dotnet build "${RepoRoot}/eng/service.proj" /p:ServiceDirectory=$ServiceDirectory /p:Project=$ArtifactsDirectoryName /p:IncludeTests=false /p:IncludeSamples=false /p:IncludePerf=false /p:IncludeStress=false /p:BuildInParallel=false /p:OutputPath=$ApiDependenciesDir /p:CopyLocalLockFileAssemblies=true
+if ($LASTEXITCODE -ne 0) {
+ Log-Warning "Include Client Dependencies build failed with $LASTEXITCODE please see output above"
+ exit 0
}
Write-Verbose "Remove all unneeded artifacts from build output directory"
-Remove-Item –Path "${ApiDir}/*" -Include * -Exclude "${ArtifactName}.dll", "${ArtifactName}.xml"
+Remove-Item -Path "${ApiDir}/*" -Include * -Exclude "${ArtifactName}.dll", "${ArtifactName}.xml" -Recurse -Force
Write-Verbose "Initialize Frameworks File"
& "${MDocTool}" fx-bootstrap "${FrameworkDir}"
@@ -182,4 +183,4 @@ $mutatedContent = $mutatedContent -replace $hrefRegex, '"./$1"'
Set-Content -Path $baseUrl -Value $mutatedContent -NoNewline
Write-Verbose "Compress and copy HTML into the staging Area"
-Compress-Archive -Path "${DocOutHtmlDir}/*" -DestinationPath "${ArtifactStagingDirectory}/${ArtifactName}/${ArtifactName}.docs.zip" -CompressionLevel Fastest
\ No newline at end of file
+Compress-Archive -Path "${DocOutHtmlDir}/*" -DestinationPath "${ArtifactStagingDirectory}/${ArtifactName}/${ArtifactName}.docs.zip" -CompressionLevel Fastest
diff --git a/doc/dev/Versioning.md b/doc/dev/Versioning.md
index b5d2f3c8a64d7..3e662f869ee2c 100644
--- a/doc/dev/Versioning.md
+++ b/doc/dev/Versioning.md
@@ -45,8 +45,8 @@ They will use the following format which is also used by the .NET team:
```
FILEMAJOR.FILEMINOR.FILEPATCH.FILEREVISION
```
-- `FILEMAJOR`: Specified in the first part of `VersionPrefix` property.
-- `FILEMINOR`: Set to `MINOR * 100 + PATCH / 100`, where `MINOR` and `PATCH` are the 2nd and 3rd parts of `VersionPrefix` property.
+- `FILEMAJOR`: Specified in the first part of `Version` property.
+- `FILEMINOR`: Set to `MINOR * 100 + PATCH / 100`, where `MINOR` and `PATCH` are the 2nd and 3rd parts of `Version` property.
- `FILEPATCH`: Set to `(PATCH % 100) * 100 + yy`.
- `FILEREVISION`: Set to `(50 * mm + dd) * 100 + r`. This algorithm makes it easy to parse the month and date from `FILEREVISION` while staying in the range of a short which is what a version element uses.
diff --git a/eng/Directory.Build.Common.props b/eng/Directory.Build.Common.props
index 49c1a31473087..3da126724dd08 100644
--- a/eng/Directory.Build.Common.props
+++ b/eng/Directory.Build.Common.props
@@ -77,7 +77,8 @@
AZPROVISION001;
- true
+
+ false
-
+
-
+
-
+
-
-
-
+
+
+
+
@@ -177,6 +178,10 @@
+
+
+
+
-
+
@@ -269,6 +274,7 @@
+
@@ -365,14 +371,14 @@
-
-
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/eng/common/InterdependencyGraph.html b/eng/common/InterdependencyGraph.html
deleted file mode 100644
index 21f78563ed421..0000000000000
--- a/eng/common/InterdependencyGraph.html
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-Interdependency Graph
-
-
-
-
-
-
-
-
-
-
Dependency Graph
-
-
-
-
-
-
-
-
diff --git a/eng/common/TestResources/New-TestResources.ps1 b/eng/common/TestResources/New-TestResources.ps1
index 6ee09ff3b23ec..6ccf55a781c1e 100644
--- a/eng/common/TestResources/New-TestResources.ps1
+++ b/eng/common/TestResources/New-TestResources.ps1
@@ -117,6 +117,8 @@ param (
$NewTestResourcesRemainingArguments
)
+. (Join-Path $PSScriptRoot .. scripts Helpers Resource-Helpers.ps1)
+. $PSScriptRoot/TestResources-Helpers.ps1
. $PSScriptRoot/SubConfig-Helpers.ps1
if (!$ServicePrincipalAuth) {
@@ -131,272 +133,6 @@ if (!$PSBoundParameters.ContainsKey('ErrorAction')) {
$ErrorActionPreference = 'Stop'
}
-function Log($Message)
-{
- Write-Host ('{0} - {1}' -f [DateTime]::Now.ToLongTimeString(), $Message)
-}
-
-# vso commands are specially formatted log lines that are parsed by Azure Pipelines
-# to perform additional actions, most commonly marking values as secrets.
-# https://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands
-function LogVsoCommand([string]$message)
-{
- if (!$CI -or $SuppressVsoCommands) {
- return
- }
- Write-Host $message
-}
-
-function Retry([scriptblock] $Action, [int] $Attempts = 5)
-{
- $attempt = 0
- $sleep = 5
-
- while ($attempt -lt $Attempts) {
- try {
- $attempt++
- return $Action.Invoke()
- } catch {
- if ($attempt -lt $Attempts) {
- $sleep *= 2
-
- Write-Warning "Attempt $attempt failed: $_. Trying again in $sleep seconds..."
- Start-Sleep -Seconds $sleep
- } else {
- throw
- }
- }
- }
-}
-
-# NewServicePrincipalWrapper creates an object from an AAD graph or Microsoft Graph service principal object type.
-# This is necessary to work around breaking changes introduced in Az version 7.0.0:
-# https://azure.microsoft.com/en-us/updates/update-your-apps-to-use-microsoft-graph-before-30-june-2022/
-function NewServicePrincipalWrapper([string]$subscription, [string]$resourceGroup, [string]$displayName)
-{
- if ((Get-Module Az.Resources).Version -eq "5.3.0") {
- # https://github.com/Azure/azure-powershell/issues/17040
- # New-AzAdServicePrincipal calls will fail with:
- # "You cannot call a method on a null-valued expression."
- Write-Warning "Az.Resources version 5.3.0 is not supported. Please update to >= 5.3.1"
- Write-Warning "Update-Module Az.Resources -RequiredVersion 5.3.1"
- exit 1
- }
-
- try {
- $servicePrincipal = Retry {
- New-AzADServicePrincipal -Role "Owner" -Scope "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName" -DisplayName $displayName
- }
- } catch {
- # The underlying error "The directory object quota limit for the Principal has been exceeded" gets overwritten by the module trying
- # to call New-AzADApplication with a null object instead of stopping execution, which makes this case hard to diagnose because it prints the following:
- # "Cannot bind argument to parameter 'ObjectId' because it is an empty string."
- # Provide a more helpful diagnostic prompt to the user if appropriate:
- $totalApps = (Get-AzADApplication -OwnedApplication).Length
- $msg = "App Registrations owned by you total $totalApps and may exceed the max quota (likely around 135)." + `
- "`nTry removing some at https://ms.portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps" + `
- " or by running the following command to remove apps created by this script:" + `
- "`n Get-AzADApplication -DisplayNameStartsWith '$baseName' | Remove-AzADApplication" + `
- "`nNOTE: You may need to wait for the quota number to be updated after removing unused applications."
- Write-Warning $msg
- throw
- }
-
- $spPassword = ""
- $appId = ""
- if (Get-Member -Name "Secret" -InputObject $servicePrincipal -MemberType property) {
- Write-Verbose "Using legacy PSADServicePrincipal object type from AAD graph API"
- # Secret property exists on PSADServicePrincipal type from AAD graph in Az # module versions < 7.0.0
- $spPassword = $servicePrincipal.Secret
- $appId = $servicePrincipal.ApplicationId
- } else {
- if ((Get-Module Az.Resources).Version -eq "5.1.0") {
- Write-Verbose "Creating password and credential for service principal via MS Graph API"
- Write-Warning "Please update Az.Resources to >= 5.2.0 by running 'Update-Module Az'"
- # Microsoft graph objects (Az.Resources version == 5.1.0) do not provision a secret on creation so it must be added separately.
- # Submitting a password credential object without specifying a password will result in one being generated on the server side.
- $password = New-Object -TypeName "Microsoft.Azure.PowerShell.Cmdlets.Resources.MSGraph.Models.ApiV10.MicrosoftGraphPasswordCredential"
- $password.DisplayName = "Password for $displayName"
- $credential = Retry { New-AzADSpCredential -PasswordCredentials $password -ServicePrincipalObject $servicePrincipal -ErrorAction 'Stop' }
- $spPassword = ConvertTo-SecureString $credential.SecretText -AsPlainText -Force
- $appId = $servicePrincipal.AppId
- } else {
- Write-Verbose "Creating service principal credential via MS Graph API"
- # In 5.2.0 the password credential issue was fixed (see https://github.com/Azure/azure-powershell/pull/16690) but the
- # parameter set was changed making the above call fail due to a missing ServicePrincipalId parameter.
- $credential = Retry { $servicePrincipal | New-AzADSpCredential -ErrorAction 'Stop' }
- $spPassword = ConvertTo-SecureString $credential.SecretText -AsPlainText -Force
- $appId = $servicePrincipal.AppId
- }
- }
-
- return @{
- AppId = $appId
- ApplicationId = $appId
- # This is the ObjectId/OID but most return objects use .Id so keep it consistent to prevent confusion
- Id = $servicePrincipal.Id
- DisplayName = $servicePrincipal.DisplayName
- Secret = $spPassword
- }
-}
-
-function LoadCloudConfig([string] $env)
-{
- $configPath = "$PSScriptRoot/clouds/$env.json"
- if (!(Test-Path $configPath)) {
- Write-Warning "Could not find cloud configuration for environment '$env'"
- return @{}
- }
-
- $config = Get-Content $configPath | ConvertFrom-Json -AsHashtable
- return $config
-}
-
-function MergeHashes([hashtable] $source, [psvariable] $dest)
-{
- foreach ($key in $source.Keys) {
- if ($dest.Value.Contains($key) -and $dest.Value[$key] -ne $source[$key]) {
- Write-Warning ("Overwriting '$($dest.Name).$($key)' with value '$($dest.Value[$key])' " +
- "to new value '$($source[$key])'")
- }
- $dest.Value[$key] = $source[$key]
- }
-}
-
-function BuildBicepFile([System.IO.FileSystemInfo] $file)
-{
- if (!(Get-Command bicep -ErrorAction Ignore)) {
- Write-Error "A bicep file was found at '$($file.FullName)' but the Azure Bicep CLI is not installed. See aka.ms/bicep-install"
- throw
- }
-
- $tmp = $env:TEMP ? $env:TEMP : [System.IO.Path]::GetTempPath()
- $templateFilePath = Join-Path $tmp "$ResourceType-resources.$(New-Guid).compiled.json"
-
- # Az can deploy bicep files natively, but by compiling here it becomes easier to parse the
- # outputted json for mismatched parameter declarations.
- bicep build $file.FullName --outfile $templateFilePath
- if ($LASTEXITCODE) {
- Write-Error "Failure building bicep file '$($file.FullName)'"
- throw
- }
-
- return $templateFilePath
-}
-
-function BuildDeploymentOutputs([string]$serviceName, [object]$azContext, [object]$deployment, [hashtable]$environmentVariables) {
- $serviceDirectoryPrefix = BuildServiceDirectoryPrefix $serviceName
- # Add default values
- $deploymentOutputs = [Ordered]@{
- "${serviceDirectoryPrefix}SUBSCRIPTION_ID" = $azContext.Subscription.Id;
- "${serviceDirectoryPrefix}RESOURCE_GROUP" = $resourceGroup.ResourceGroupName;
- "${serviceDirectoryPrefix}LOCATION" = $resourceGroup.Location;
- "${serviceDirectoryPrefix}ENVIRONMENT" = $azContext.Environment.Name;
- "${serviceDirectoryPrefix}AZURE_AUTHORITY_HOST" = $azContext.Environment.ActiveDirectoryAuthority;
- "${serviceDirectoryPrefix}RESOURCE_MANAGER_URL" = $azContext.Environment.ResourceManagerUrl;
- "${serviceDirectoryPrefix}SERVICE_MANAGEMENT_URL" = $azContext.Environment.ServiceManagementUrl;
- "AZURE_SERVICE_DIRECTORY" = $serviceName.ToUpperInvariant();
- }
-
- if ($ServicePrincipalAuth) {
- $deploymentOutputs["${serviceDirectoryPrefix}CLIENT_ID"] = $TestApplicationId;
- $deploymentOutputs["${serviceDirectoryPrefix}CLIENT_SECRET"] = $TestApplicationSecret;
- $deploymentOutputs["${serviceDirectoryPrefix}TENANT_ID"] = $azContext.Tenant.Id;
- }
-
- MergeHashes $environmentVariables $(Get-Variable deploymentOutputs)
-
- foreach ($key in $deployment.Outputs.Keys) {
- $variable = $deployment.Outputs[$key]
-
- # Work around bug that makes the first few characters of environment variables be lowercase.
- $key = $key.ToUpperInvariant()
-
- if ($variable.Type -eq 'String' -or $variable.Type -eq 'SecureString') {
- $deploymentOutputs[$key] = $variable.Value
- }
- }
-
- # Force capitalization of all keys to avoid Azure Pipelines confusion with
- # variable auto-capitalization and OS env var capitalization differences
- $capitalized = @{}
- foreach ($item in $deploymentOutputs.GetEnumerator()) {
- $capitalized[$item.Name.ToUpperInvariant()] = $item.Value
- }
-
- return $capitalized
-}
-
-function SetDeploymentOutputs(
- [string]$serviceName,
- [object]$azContext,
- [object]$deployment,
- [object]$templateFile,
- [hashtable]$environmentVariables = @{}
-) {
- $deploymentEnvironmentVariables = $environmentVariables.Clone()
- $deploymentOutputs = BuildDeploymentOutputs $serviceName $azContext $deployment $deploymentEnvironmentVariables
-
- if ($OutFile) {
- if (!$IsWindows) {
- Write-Host 'File option is supported only on Windows'
- }
-
- $outputFile = "$($templateFile.originalFilePath).env"
-
- $environmentText = $deploymentOutputs | ConvertTo-Json;
- $bytes = [System.Text.Encoding]::UTF8.GetBytes($environmentText)
- $protectedBytes = [Security.Cryptography.ProtectedData]::Protect($bytes, $null, [Security.Cryptography.DataProtectionScope]::CurrentUser)
-
- Set-Content $outputFile -Value $protectedBytes -AsByteStream -Force
-
- Write-Host "Test environment settings`n $environmentText`nstored into encrypted $outputFile"
- } else {
- if (!$CI) {
- # Write an extra new line to isolate the environment variables for easy reading.
- Log "Persist the following environment variables based on your detected shell ($shell):`n"
- }
-
- # Write overwrite warnings first, since local execution prints a runnable command to export variables
- foreach ($key in $deploymentOutputs.Keys) {
- if ([Environment]::GetEnvironmentVariable($key)) {
- Write-Warning "Deployment outputs will overwrite pre-existing environment variable '$key'"
- }
- }
-
- # Marking values as secret by allowed keys below is not sufficient, as there may be outputs set in the ARM/bicep
- # file that re-mark those values as secret (since all user-provided deployment outputs are treated as secret by default).
- # This variable supports a second check on not marking previously allowed keys/values as secret.
- $notSecretValues = @()
- foreach ($key in $deploymentOutputs.Keys) {
- $value = $deploymentOutputs[$key]
- $deploymentEnvironmentVariables[$key] = $value
-
- if ($CI) {
- if (ShouldMarkValueAsSecret $serviceName $key $value $notSecretValues) {
- # Treat all ARM template output variables as secrets since "SecureString" variables do not set values.
- # In order to mask secrets but set environment variables for any given ARM template, we set variables twice as shown below.
- LogVsoCommand "##vso[task.setvariable variable=_$key;issecret=true;]$value"
- Write-Host "Setting variable as secret '$key'"
- } else {
- Write-Host "Setting variable '$key': $value"
- $notSecretValues += $value
- }
- LogVsoCommand "##vso[task.setvariable variable=$key;]$value"
- } else {
- Write-Host ($shellExportFormat -f $key, $value)
- }
- }
-
- if ($key) {
- # Isolate the environment variables for easy reading.
- Write-Host "`n"
- $key = $null
- }
- }
-
- return $deploymentEnvironmentVariables, $deploymentOutputs
-}
# Support actions to invoke on exit.
$exitActions = @({
@@ -843,31 +579,7 @@ try {
-templateFile $templateFile `
-environmentVariables $EnvironmentVariables
- $storageAccounts = Retry { Get-AzResource -ResourceGroupName $ResourceGroupName -ResourceType "Microsoft.Storage/storageAccounts" }
- # Add client IP to storage account when running as local user. Pipeline's have their own vnet with access
- if ($storageAccounts) {
- foreach ($account in $storageAccounts) {
- $rules = Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -AccountName $account.Name
- if ($rules -and $rules.DefaultAction -eq "Allow") {
- Write-Host "Restricting network rules in storage account '$($account.Name)' to deny access by default"
- Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -DefaultAction Deny }
- if ($CI -and $env:PoolSubnet) {
- Write-Host "Enabling access to '$($account.Name)' from pipeline subnet $($env:PoolSubnet)"
- Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -VirtualNetworkResourceId $env:PoolSubnet }
- } elseif ($AllowIpRanges) {
- Write-Host "Enabling access to '$($account.Name)' to $($AllowIpRanges.Length) IP ranges"
- $ipRanges = $AllowIpRanges | ForEach-Object {
- @{ Action = 'allow'; IPAddressOrRange = $_ }
- }
- Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -IPRule $ipRanges | Out-Null }
- } elseif (!$CI) {
- Write-Host "Enabling access to '$($account.Name)' from client IP"
- $clientIp ??= Retry { Invoke-RestMethod -Uri 'https://icanhazip.com/' } # cloudflare owned ip site
- Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -IPAddressOrRange $clientIp | Out-Null }
- }
- }
- }
- }
+ SetResourceNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -CI:$CI
$postDeploymentScript = $templateFile.originalFilePath | Split-Path | Join-Path -ChildPath "$ResourceType-resources-post.ps1"
if (Test-Path $postDeploymentScript) {
diff --git a/eng/common/TestResources/Remove-TestResources.ps1 b/eng/common/TestResources/Remove-TestResources.ps1
index 490b41b8ebe9b..12411c4ee2aa9 100644
--- a/eng/common/TestResources/Remove-TestResources.ps1
+++ b/eng/common/TestResources/Remove-TestResources.ps1
@@ -61,6 +61,19 @@ param (
[Parameter()]
[switch] $ServicePrincipalAuth,
+ # List of CIDR ranges to add to specific resource firewalls, e.g. @(10.100.0.0/16, 10.200.0.0/16)
+ [Parameter()]
+ [ValidateCount(0,399)]
+ [Validatescript({
+ foreach ($range in $PSItem) {
+ if ($range -like '*/31' -or $range -like '*/32') {
+ throw "Firewall IP Ranges cannot contain a /31 or /32 CIDR"
+ }
+ }
+ return $true
+ })]
+ [array] $AllowIpRanges = @(),
+
[Parameter()]
[switch] $Force,
@@ -69,6 +82,9 @@ param (
$RemoveTestResourcesRemainingArguments
)
+. (Join-Path $PSScriptRoot .. scripts Helpers Resource-Helpers.ps1)
+. (Join-Path $PSScriptRoot TestResources-Helpers.ps1)
+
# By default stop for any error.
if (!$PSBoundParameters.ContainsKey('ErrorAction')) {
$ErrorActionPreference = 'Stop'
@@ -241,6 +257,9 @@ $verifyDeleteScript = {
# Get any resources that can be purged after the resource group is deleted coerced into a collection even if empty.
$purgeableResources = Get-PurgeableGroupResources $ResourceGroupName
+SetResourceNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -SetFirewall -CI:$CI
+Remove-WormStorageAccounts -GroupPrefix $ResourceGroupName -CI:$CI
+
Log "Deleting resource group '$ResourceGroupName'"
if ($Force -and !$purgeableResources) {
Remove-AzResourceGroup -Name "$ResourceGroupName" -Force:$Force -AsJob
diff --git a/eng/common/TestResources/TestResources-Helpers.ps1 b/eng/common/TestResources/TestResources-Helpers.ps1
new file mode 100644
index 0000000000000..6dee017aec9a7
--- /dev/null
+++ b/eng/common/TestResources/TestResources-Helpers.ps1
@@ -0,0 +1,267 @@
+function Log($Message) {
+ Write-Host ('{0} - {1}' -f [DateTime]::Now.ToLongTimeString(), $Message)
+}
+
+# vso commands are specially formatted log lines that are parsed by Azure Pipelines
+# to perform additional actions, most commonly marking values as secrets.
+# https://docs.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands
+function LogVsoCommand([string]$message) {
+ if (!$CI -or $SuppressVsoCommands) {
+ return
+ }
+ Write-Host $message
+}
+
+function Retry([scriptblock] $Action, [int] $Attempts = 5) {
+ $attempt = 0
+ $sleep = 5
+
+ while ($attempt -lt $Attempts) {
+ try {
+ $attempt++
+ return $Action.Invoke()
+ }
+ catch {
+ if ($attempt -lt $Attempts) {
+ $sleep *= 2
+
+ Write-Warning "Attempt $attempt failed: $_. Trying again in $sleep seconds..."
+ Start-Sleep -Seconds $sleep
+ }
+ else {
+ throw
+ }
+ }
+ }
+}
+
+# NewServicePrincipalWrapper creates an object from an AAD graph or Microsoft Graph service principal object type.
+# This is necessary to work around breaking changes introduced in Az version 7.0.0:
+# https://azure.microsoft.com/en-us/updates/update-your-apps-to-use-microsoft-graph-before-30-june-2022/
+function NewServicePrincipalWrapper([string]$subscription, [string]$resourceGroup, [string]$displayName) {
+ if ((Get-Module Az.Resources).Version -eq "5.3.0") {
+ # https://github.com/Azure/azure-powershell/issues/17040
+ # New-AzAdServicePrincipal calls will fail with:
+ # "You cannot call a method on a null-valued expression."
+ Write-Warning "Az.Resources version 5.3.0 is not supported. Please update to >= 5.3.1"
+ Write-Warning "Update-Module Az.Resources -RequiredVersion 5.3.1"
+ exit 1
+ }
+
+ try {
+ $servicePrincipal = Retry {
+ New-AzADServicePrincipal -Role "Owner" -Scope "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName" -DisplayName $displayName
+ }
+ }
+ catch {
+ # The underlying error "The directory object quota limit for the Principal has been exceeded" gets overwritten by the module trying
+ # to call New-AzADApplication with a null object instead of stopping execution, which makes this case hard to diagnose because it prints the following:
+ # "Cannot bind argument to parameter 'ObjectId' because it is an empty string."
+ # Provide a more helpful diagnostic prompt to the user if appropriate:
+ $totalApps = (Get-AzADApplication -OwnedApplication).Length
+ $msg = "App Registrations owned by you total $totalApps and may exceed the max quota (likely around 135)." + `
+ "`nTry removing some at https://ms.portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/RegisteredApps" + `
+ " or by running the following command to remove apps created by this script:" + `
+ "`n Get-AzADApplication -DisplayNameStartsWith '$baseName' | Remove-AzADApplication" + `
+ "`nNOTE: You may need to wait for the quota number to be updated after removing unused applications."
+ Write-Warning $msg
+ throw
+ }
+
+ $spPassword = ""
+ $appId = ""
+ if (Get-Member -Name "Secret" -InputObject $servicePrincipal -MemberType property) {
+ Write-Verbose "Using legacy PSADServicePrincipal object type from AAD graph API"
+ # Secret property exists on PSADServicePrincipal type from AAD graph in Az # module versions < 7.0.0
+ $spPassword = $servicePrincipal.Secret
+ $appId = $servicePrincipal.ApplicationId
+ }
+ else {
+ if ((Get-Module Az.Resources).Version -eq "5.1.0") {
+ Write-Verbose "Creating password and credential for service principal via MS Graph API"
+ Write-Warning "Please update Az.Resources to >= 5.2.0 by running 'Update-Module Az'"
+ # Microsoft graph objects (Az.Resources version == 5.1.0) do not provision a secret on creation so it must be added separately.
+ # Submitting a password credential object without specifying a password will result in one being generated on the server side.
+ $password = New-Object -TypeName "Microsoft.Azure.PowerShell.Cmdlets.Resources.MSGraph.Models.ApiV10.MicrosoftGraphPasswordCredential"
+ $password.DisplayName = "Password for $displayName"
+ $credential = Retry { New-AzADSpCredential -PasswordCredentials $password -ServicePrincipalObject $servicePrincipal -ErrorAction 'Stop' }
+ $spPassword = ConvertTo-SecureString $credential.SecretText -AsPlainText -Force
+ $appId = $servicePrincipal.AppId
+ }
+ else {
+ Write-Verbose "Creating service principal credential via MS Graph API"
+ # In 5.2.0 the password credential issue was fixed (see https://github.com/Azure/azure-powershell/pull/16690) but the
+ # parameter set was changed making the above call fail due to a missing ServicePrincipalId parameter.
+ $credential = Retry { $servicePrincipal | New-AzADSpCredential -ErrorAction 'Stop' }
+ $spPassword = ConvertTo-SecureString $credential.SecretText -AsPlainText -Force
+ $appId = $servicePrincipal.AppId
+ }
+ }
+
+ return @{
+ AppId = $appId
+ ApplicationId = $appId
+ # This is the ObjectId/OID but most return objects use .Id so keep it consistent to prevent confusion
+ Id = $servicePrincipal.Id
+ DisplayName = $servicePrincipal.DisplayName
+ Secret = $spPassword
+ }
+}
+
+function LoadCloudConfig([string] $env) {
+ $configPath = "$PSScriptRoot/clouds/$env.json"
+ if (!(Test-Path $configPath)) {
+ Write-Warning "Could not find cloud configuration for environment '$env'"
+ return @{}
+ }
+
+ $config = Get-Content $configPath | ConvertFrom-Json -AsHashtable
+ return $config
+}
+
+function MergeHashes([hashtable] $source, [psvariable] $dest) {
+ foreach ($key in $source.Keys) {
+ if ($dest.Value.Contains($key) -and $dest.Value[$key] -ne $source[$key]) {
+ Write-Warning ("Overwriting '$($dest.Name).$($key)' with value '$($dest.Value[$key])' " +
+ "to new value '$($source[$key])'")
+ }
+ $dest.Value[$key] = $source[$key]
+ }
+}
+
+function BuildBicepFile([System.IO.FileSystemInfo] $file) {
+ if (!(Get-Command bicep -ErrorAction Ignore)) {
+ Write-Error "A bicep file was found at '$($file.FullName)' but the Azure Bicep CLI is not installed. See aka.ms/bicep-install"
+ throw
+ }
+
+ $tmp = $env:TEMP ? $env:TEMP : [System.IO.Path]::GetTempPath()
+ $templateFilePath = Join-Path $tmp "$ResourceType-resources.$(New-Guid).compiled.json"
+
+ # Az can deploy bicep files natively, but by compiling here it becomes easier to parse the
+ # outputted json for mismatched parameter declarations.
+ bicep build $file.FullName --outfile $templateFilePath
+ if ($LASTEXITCODE) {
+ Write-Error "Failure building bicep file '$($file.FullName)'"
+ throw
+ }
+
+ return $templateFilePath
+}
+
+function BuildDeploymentOutputs([string]$serviceName, [object]$azContext, [object]$deployment, [hashtable]$environmentVariables) {
+ $serviceDirectoryPrefix = BuildServiceDirectoryPrefix $serviceName
+ # Add default values
+ $deploymentOutputs = [Ordered]@{
+ "${serviceDirectoryPrefix}SUBSCRIPTION_ID" = $azContext.Subscription.Id;
+ "${serviceDirectoryPrefix}RESOURCE_GROUP" = $resourceGroup.ResourceGroupName;
+ "${serviceDirectoryPrefix}LOCATION" = $resourceGroup.Location;
+ "${serviceDirectoryPrefix}ENVIRONMENT" = $azContext.Environment.Name;
+ "${serviceDirectoryPrefix}AZURE_AUTHORITY_HOST" = $azContext.Environment.ActiveDirectoryAuthority;
+ "${serviceDirectoryPrefix}RESOURCE_MANAGER_URL" = $azContext.Environment.ResourceManagerUrl;
+ "${serviceDirectoryPrefix}SERVICE_MANAGEMENT_URL" = $azContext.Environment.ServiceManagementUrl;
+ "AZURE_SERVICE_DIRECTORY" = $serviceName.ToUpperInvariant();
+ }
+
+ if ($ServicePrincipalAuth) {
+ $deploymentOutputs["${serviceDirectoryPrefix}CLIENT_ID"] = $TestApplicationId;
+ $deploymentOutputs["${serviceDirectoryPrefix}CLIENT_SECRET"] = $TestApplicationSecret;
+ $deploymentOutputs["${serviceDirectoryPrefix}TENANT_ID"] = $azContext.Tenant.Id;
+ }
+
+ MergeHashes $environmentVariables $(Get-Variable deploymentOutputs)
+
+ foreach ($key in $deployment.Outputs.Keys) {
+ $variable = $deployment.Outputs[$key]
+
+ # Work around bug that makes the first few characters of environment variables be lowercase.
+ $key = $key.ToUpperInvariant()
+
+ if ($variable.Type -eq 'String' -or $variable.Type -eq 'SecureString') {
+ $deploymentOutputs[$key] = $variable.Value
+ }
+ }
+
+ # Force capitalization of all keys to avoid Azure Pipelines confusion with
+ # variable auto-capitalization and OS env var capitalization differences
+ $capitalized = @{}
+ foreach ($item in $deploymentOutputs.GetEnumerator()) {
+ $capitalized[$item.Name.ToUpperInvariant()] = $item.Value
+ }
+
+ return $capitalized
+}
+
+function SetDeploymentOutputs(
+ [string]$serviceName,
+ [object]$azContext,
+ [object]$deployment,
+ [object]$templateFile,
+ [hashtable]$environmentVariables = @{}
+) {
+ $deploymentEnvironmentVariables = $environmentVariables.Clone()
+ $deploymentOutputs = BuildDeploymentOutputs $serviceName $azContext $deployment $deploymentEnvironmentVariables
+
+ if ($OutFile) {
+ if (!$IsWindows) {
+ Write-Host 'File option is supported only on Windows'
+ }
+
+ $outputFile = "$($templateFile.originalFilePath).env"
+
+ $environmentText = $deploymentOutputs | ConvertTo-Json;
+ $bytes = [System.Text.Encoding]::UTF8.GetBytes($environmentText)
+ $protectedBytes = [Security.Cryptography.ProtectedData]::Protect($bytes, $null, [Security.Cryptography.DataProtectionScope]::CurrentUser)
+
+ Set-Content $outputFile -Value $protectedBytes -AsByteStream -Force
+
+ Write-Host "Test environment settings`n $environmentText`nstored into encrypted $outputFile"
+ }
+ else {
+ if (!$CI) {
+ # Write an extra new line to isolate the environment variables for easy reading.
+ Log "Persist the following environment variables based on your detected shell ($shell):`n"
+ }
+
+ # Write overwrite warnings first, since local execution prints a runnable command to export variables
+ foreach ($key in $deploymentOutputs.Keys) {
+ if ([Environment]::GetEnvironmentVariable($key)) {
+ Write-Warning "Deployment outputs will overwrite pre-existing environment variable '$key'"
+ }
+ }
+
+ # Marking values as secret by allowed keys below is not sufficient, as there may be outputs set in the ARM/bicep
+ # file that re-mark those values as secret (since all user-provided deployment outputs are treated as secret by default).
+ # This variable supports a second check on not marking previously allowed keys/values as secret.
+ $notSecretValues = @()
+ foreach ($key in $deploymentOutputs.Keys) {
+ $value = $deploymentOutputs[$key]
+ $deploymentEnvironmentVariables[$key] = $value
+
+ if ($CI) {
+ if (ShouldMarkValueAsSecret $serviceName $key $value $notSecretValues) {
+ # Treat all ARM template output variables as secrets since "SecureString" variables do not set values.
+ # In order to mask secrets but set environment variables for any given ARM template, we set variables twice as shown below.
+ LogVsoCommand "##vso[task.setvariable variable=_$key;issecret=true;]$value"
+ Write-Host "Setting variable as secret '$key'"
+ }
+ else {
+ Write-Host "Setting variable '$key': $value"
+ $notSecretValues += $value
+ }
+ LogVsoCommand "##vso[task.setvariable variable=$key;]$value"
+ }
+ else {
+ Write-Host ($shellExportFormat -f $key, $value)
+ }
+ }
+
+ if ($key) {
+ # Isolate the environment variables for easy reading.
+ Write-Host "`n"
+ $key = $null
+ }
+ }
+
+ return $deploymentEnvironmentVariables, $deploymentOutputs
+}
diff --git a/eng/common/TestResources/build-test-resource-config.yml b/eng/common/TestResources/build-test-resource-config.yml
index c64664f852b1f..e3dd306449552 100644
--- a/eng/common/TestResources/build-test-resource-config.yml
+++ b/eng/common/TestResources/build-test-resource-config.yml
@@ -8,7 +8,7 @@ parameters:
# EnvVars is used to help diagnose variable conflict issues early
- name: EnvVars
type: object
- default: null
+ default: {}
- name: SubscriptionConfigurationFilePaths
type: object
default: null
@@ -16,6 +16,7 @@ parameters:
steps:
- task: AzurePowerShell@5
displayName: Set Pipeline Subnet Info
+ condition: and(succeeded(), ne(variables['Pool'], ''))
env: ${{ parameters.EnvVars }}
inputs:
azureSubscription: azure-sdk-tests
@@ -67,6 +68,12 @@ steps:
if ($subConfigFilesRaw) {
$subConfigFiles = $subConfigFilesRaw | ConvertFrom-Json -AsHashtable
foreach ($file in $subConfigFiles) {
+ # In some cases, $file could be an empty string. Get-Content will fail
+ # if $file is an empty string, so skip those cases.
+ if (!$file) {
+ continue
+ }
+
Write-Host "Merging sub config from file: $file"
$subConfig = Get-Content $file | ConvertFrom-Json -AsHashtable
$finalConfig = UpdateSubscriptionConfiguration $finalConfig $subConfig
diff --git a/eng/common/TestResources/remove-test-resources.yml b/eng/common/TestResources/remove-test-resources.yml
index b877d72139a20..025e90dd4c297 100644
--- a/eng/common/TestResources/remove-test-resources.yml
+++ b/eng/common/TestResources/remove-test-resources.yml
@@ -29,7 +29,9 @@ steps:
displayName: Remove test resources
condition: and(eq(variables['CI_HAS_DEPLOYED_RESOURCES'], 'true'), ne(variables['Skip.RemoveTestResources'], 'true'))
continueOnError: true
- env: ${{ parameters.EnvVars }}
+ env:
+ PoolSubnet: $(PoolSubnet)
+ ${{ insert }}: ${{ parameters.EnvVars }}
inputs:
azureSubscription: ${{ parameters.ServiceConnection }}
azurePowerShellVersion: LatestVersion
@@ -46,6 +48,7 @@ steps:
@subscriptionConfiguration `
-ResourceType '${{ parameters.ResourceType }}' `
-ServiceDirectory "${{ parameters.ServiceDirectory }}" `
+ -AllowIpRanges ('$(azsdk-corp-net-ip-ranges)' -split ',') `
-CI `
-Force `
-Verbose
@@ -63,10 +66,13 @@ steps:
-ResourceType '${{ parameters.ResourceType }}' `
-ServiceDirectory "${{ parameters.ServiceDirectory }}" `
-ServicePrincipalAuth `
+ -AllowIpRanges ('$(azsdk-corp-net-ip-ranges)' -split ',') `
-CI `
-Force `
-Verbose
displayName: Remove test resources
condition: and(eq(variables['CI_HAS_DEPLOYED_RESOURCES'], 'true'), ne(variables['Skip.RemoveTestResources'], 'true'))
continueOnError: true
- env: ${{ parameters.EnvVars }}
+ env:
+ PoolSubnet: $(PoolSubnet)
+ ${{ insert }}: ${{ parameters.EnvVars }}
diff --git a/eng/common/pipelines/templates/steps/daily-dev-build-variable.yml b/eng/common/pipelines/templates/steps/daily-dev-build-variable.yml
index 5d53a5265c7af..37efd0bd0312f 100644
--- a/eng/common/pipelines/templates/steps/daily-dev-build-variable.yml
+++ b/eng/common/pipelines/templates/steps/daily-dev-build-variable.yml
@@ -2,6 +2,7 @@
# is used when this pipeline is going to be generating and publishing daily dev builds.
parameters:
ServiceDirectory: ''
+ Condition: succeeded()
steps:
- ${{if ne(parameters.ServiceDirectory, '')}}:
- task: Powershell@2
@@ -13,7 +14,7 @@ steps:
pwsh: true
workingDirectory: $(Pipeline.Workspace)
displayName: Dump Package properties
- condition: succeeded()
+ condition: ${{ parameters.Condition }}
- pwsh: |
$setDailyDevBuild = "false"
if (('$(Build.Reason)' -eq 'Schedule') -and ('$(System.TeamProject)' -eq 'internal')) {
@@ -21,4 +22,4 @@ steps:
}
echo "##vso[task.setvariable variable=SetDevVersion]$setDailyDevBuild"
displayName: "Setup Versioning Properties"
- condition: and(succeeded(), eq(variables['SetDevVersion'], ''))
+ condition: and(${{ parameters.Condition }}, eq(variables['SetDevVersion'], ''))
diff --git a/eng/common/pipelines/templates/steps/set-default-branch.yml b/eng/common/pipelines/templates/steps/set-default-branch.yml
index 31bf289361640..12ec1be317b46 100644
--- a/eng/common/pipelines/templates/steps/set-default-branch.yml
+++ b/eng/common/pipelines/templates/steps/set-default-branch.yml
@@ -2,6 +2,7 @@ parameters:
WorkingDirectory: '$(System.DefaultWorkingDirectory)'
RemoteRepo: 'origin'
DefaultBranchVariableName: DefaultBranch
+ Condition: 'succeeded()'
steps:
- pwsh: |
$setDefaultBranch = (git remote show ${{ parameters.RemoteRepo }} | Out-String) -replace "(?ms).*HEAD branch: (\w+).*", '$1'
@@ -13,4 +14,5 @@ steps:
Write-Host "##vso[task.setvariable variable=${{ parameters.DefaultBranchVariableName }}]$setDefaultBranch"
displayName: "Setup Default Branch"
workingDirectory: ${{ parameters.workingDirectory }}
+ condition: ${{ parameters.Condition }}
ignoreLASTEXITCODE: true
diff --git a/eng/common/pipelines/templates/steps/verify-changelog.yml b/eng/common/pipelines/templates/steps/verify-changelog.yml
index 887ad1a97d901..113e0a5e695a7 100644
--- a/eng/common/pipelines/templates/steps/verify-changelog.yml
+++ b/eng/common/pipelines/templates/steps/verify-changelog.yml
@@ -11,6 +11,9 @@ parameters:
- name: ForRelease
type: boolean
default: false
+- name: Condition
+ type: string
+ default: succeeded()
steps:
- task: Powershell@2
@@ -23,4 +26,5 @@ steps:
pwsh: true
workingDirectory: $(Pipeline.Workspace)
displayName: Verify ChangeLogEntry for ${{ parameters.PackageName }}
+ condition: ${{ parameters.Condition }}
continueOnError: false
diff --git a/eng/common/pipelines/templates/steps/verify-links.yml b/eng/common/pipelines/templates/steps/verify-links.yml
index 8a84f8d0ecf99..4d84e124a87fb 100644
--- a/eng/common/pipelines/templates/steps/verify-links.yml
+++ b/eng/common/pipelines/templates/steps/verify-links.yml
@@ -12,6 +12,8 @@ parameters:
steps:
- template: /eng/common/pipelines/templates/steps/set-default-branch.yml
+ parameters:
+ Condition: ${{ parameters.Condition }}
- task: PowerShell@2
displayName: Link verification check
condition: ${{ parameters.Condition }}
diff --git a/eng/common/pipelines/templates/steps/verify-path-length.yml b/eng/common/pipelines/templates/steps/verify-path-length.yml
index e797292169011..259c663b9dc3f 100644
--- a/eng/common/pipelines/templates/steps/verify-path-length.yml
+++ b/eng/common/pipelines/templates/steps/verify-path-length.yml
@@ -1,11 +1,13 @@
# Template for all Python Scripts in this repository
-parameters:
+parameters:
SourceDirectory: ''
BasePathLength: 49
+ Condition: succeeded()
steps:
- task: PythonScript@0
displayName: Analyze Path Lengths
+ condition: ${{ parameters.Condition }}
inputs:
scriptSource: inline
script: |
diff --git a/eng/common/pipelines/templates/steps/verify-readme.yml b/eng/common/pipelines/templates/steps/verify-readme.yml
index 7b9217ade3e21..6eeb174b323b6 100644
--- a/eng/common/pipelines/templates/steps/verify-readme.yml
+++ b/eng/common/pipelines/templates/steps/verify-readme.yml
@@ -15,10 +15,14 @@ parameters:
- name: DocWardenVersion
type: string
default: ''
+- name: Condition
+ type: string
+ default: succeeded()
steps:
- task: PowerShell@2
displayName: "Verify Readmes"
+ condition: ${{ parameters.Condition }}
inputs:
filePath: "eng/common/scripts/Verify-Readme.ps1"
arguments: >
diff --git a/eng/common/scripts/Generate-PR-Diff.ps1 b/eng/common/scripts/Generate-PR-Diff.ps1
index 8239b219c3735..d84f9e15ca7c9 100644
--- a/eng/common/scripts/Generate-PR-Diff.ps1
+++ b/eng/common/scripts/Generate-PR-Diff.ps1
@@ -45,7 +45,7 @@ $changedServices = Get-ChangedServices -ChangedFiles $changedFiles
$result = [PSCustomObject]@{
"ChangedFiles" = $changedFiles
"ChangedServices" = $changedServices
- "PRNumber" = $env:SYSTEM_PULLREQUEST_PULLREQUESTNUMBER
+ "PRNumber" = if ($env:SYSTEM_PULLREQUEST_PULLREQUESTNUMBER) { $env:SYSTEM_PULLREQUEST_PULLREQUESTNUMBER } else { "-1" }
}
$result | ConvertTo-Json | Out-File $ArtifactName
diff --git a/eng/common/scripts/Helpers/Resource-Helpers.ps1 b/eng/common/scripts/Helpers/Resource-Helpers.ps1
index 6c02e9150e24c..fdbb44186eaf4 100644
--- a/eng/common/scripts/Helpers/Resource-Helpers.ps1
+++ b/eng/common/scripts/Helpers/Resource-Helpers.ps1
@@ -4,7 +4,7 @@
function Get-PurgeableGroupResources {
param (
- [Parameter(Mandatory=$true, Position=0)]
+ [Parameter(Mandatory = $true, Position = 0)]
[string] $ResourceGroupName
)
@@ -27,8 +27,8 @@ function Get-PurgeableGroupResources {
# Get any Key Vaults that will be deleted so they can be purged later if soft delete is enabled.
$deletedKeyVaults = @(Get-AzKeyVault -ResourceGroupName $ResourceGroupName -ErrorAction Ignore | ForEach-Object {
- # Enumerating vaults from a resource group does not return all properties we required.
- Get-AzKeyVault -VaultName $_.VaultName -ErrorAction Ignore | Where-Object { $_.EnableSoftDelete } `
+ # Enumerating vaults from a resource group does not return all properties we required.
+ Get-AzKeyVault -VaultName $_.VaultName -ErrorAction Ignore | Where-Object { $_.EnableSoftDelete } `
| Add-Member -MemberType NoteProperty -Name AzsdkResourceType -Value 'Key Vault' -PassThru `
| Add-Member -MemberType AliasProperty -Name AzsdkName -Value VaultName -PassThru
})
@@ -56,13 +56,13 @@ function Get-PurgeableResources {
$deletedHsms = @()
foreach ($r in $content.value) {
$deletedHsms += [pscustomobject] @{
- AzsdkResourceType = 'Managed HSM'
- AzsdkName = $r.name
- Id = $r.id
- Name = $r.name
- Location = $r.properties.location
- DeletionDate = $r.properties.deletionDate -as [DateTime]
- ScheduledPurgeDate = $r.properties.scheduledPurgeDate -as [DateTime]
+ AzsdkResourceType = 'Managed HSM'
+ AzsdkName = $r.name
+ Id = $r.id
+ Name = $r.name
+ Location = $r.properties.location
+ DeletionDate = $r.properties.deletionDate -as [DateTime]
+ ScheduledPurgeDate = $r.properties.scheduledPurgeDate -as [DateTime]
EnablePurgeProtection = $r.properties.purgeProtectionEnabled
}
}
@@ -91,7 +91,8 @@ function Get-PurgeableResources {
Write-Verbose "Found $($deletedKeyVaults.Count) deleted Key Vaults to potentially purge."
$purgeableResources += $deletedKeyVaults
}
- } catch { }
+ }
+ catch { }
return $purgeableResources
}
@@ -100,7 +101,7 @@ function Get-PurgeableResources {
# This allows you to pipe a collection and process each item in the collection.
filter Remove-PurgeableResources {
param (
- [Parameter(Position=0, ValueFromPipeline=$true)]
+ [Parameter(Position = 0, ValueFromPipeline = $true)]
[object[]] $Resource,
[Parameter()]
@@ -128,7 +129,7 @@ filter Remove-PurgeableResources {
# Use `-AsJob` to start a lightweight, cancellable job and pass to `Wait-PurgeableResoruceJob` for consistent behavior.
Remove-AzKeyVault -VaultName $r.VaultName -Location $r.Location -InRemovedState -Force -ErrorAction Continue -AsJob `
- | Wait-PurgeableResourceJob -Resource $r -Timeout $Timeout -PassThru:$PassThru
+ | Wait-PurgeableResourceJob -Resource $r -Timeout $Timeout -PassThru:$PassThru
}
'Managed HSM' {
@@ -139,18 +140,19 @@ filter Remove-PurgeableResources {
# Use `GetNewClosure()` on the `-Action` ScriptBlock to make sure variables are captured.
Invoke-AzRestMethod -Method POST -Path "/subscriptions/$subscriptionId/providers/Microsoft.KeyVault/locations/$($r.Location)/deletedManagedHSMs/$($r.Name)/purge?api-version=2023-02-01" -ErrorAction Ignore -AsJob `
- | Wait-PurgeableResourceJob -Resource $r -Timeout $Timeout -PassThru:$PassThru -Action {
- param ( $response )
- if ($response.StatusCode -ge 200 -and $response.StatusCode -lt 300) {
- Write-Warning "Successfully requested that Managed HSM '$($r.Name)' be purged, but may take a few minutes before it is actually purged."
- } elseif ($response.Content) {
- $content = $response.Content | ConvertFrom-Json
- if ($content.error) {
- $err = $content.error
- Write-Warning "Failed to deleted Managed HSM '$($r.Name)': ($($err.code)) $($err.message)"
- }
- }
- }.GetNewClosure()
+ | Wait-PurgeableResourceJob -Resource $r -Timeout $Timeout -PassThru:$PassThru -Action {
+ param ( $response )
+ if ($response.StatusCode -ge 200 -and $response.StatusCode -lt 300) {
+ Write-Warning "Successfully requested that Managed HSM '$($r.Name)' be purged, but may take a few minutes before it is actually purged."
+ }
+ elseif ($response.Content) {
+ $content = $response.Content | ConvertFrom-Json
+ if ($content.error) {
+ $err = $content.error
+ Write-Warning "Failed to deleted Managed HSM '$($r.Name)': ($($err.code)) $($err.message)"
+ }
+ }
+ }.GetNewClosure()
}
default {
@@ -167,12 +169,12 @@ function Log($Message) {
function Wait-PurgeableResourceJob {
param (
- [Parameter(Mandatory=$true, ValueFromPipeline=$true)]
+ [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
$Job,
# The resource is used for logging and to return if `-PassThru` is specified
# so we can easily see all resources that may be in a bad state when the script has completed.
- [Parameter(Mandatory=$true)]
+ [Parameter(Mandatory = $true)]
$Resource,
# Optional ScriptBlock should define params corresponding to the associated job's `Output` property.
@@ -195,7 +197,8 @@ function Wait-PurgeableResourceJob {
if ($Action) {
$null = $Action.Invoke($result)
}
- } else {
+ }
+ else {
Write-Warning "Timed out waiting to purge $($Resource.AzsdkResourceType) '$($Resource.AzsdkName)'. Cancelling job."
$Job.Cancel()
@@ -204,3 +207,191 @@ function Wait-PurgeableResourceJob {
}
}
}
+
+# Helper function for removing storage accounts with WORM that sometimes get leaked from live tests not set up to clean
+# up their resource policies
+function Remove-WormStorageAccounts() {
+ [CmdletBinding(SupportsShouldProcess = $True)]
+ param(
+ [string]$GroupPrefix,
+ [switch]$CI
+ )
+
+ $ErrorActionPreference = 'Stop'
+
+ # Be a little defensive so we don't delete non-live test groups via naming convention
+ # DO NOT REMOVE THIS
+ # We call this script from live test pipelines as well, and a string mismatch/error could blow away
+ # some static storage accounts we rely on
+ if (!$groupPrefix -or ($CI -and !$GroupPrefix.StartsWith('rg-'))) {
+ throw "The -GroupPrefix parameter must not be empty, or must start with 'rg-' in CI contexts"
+ }
+
+ $groups = Get-AzResourceGroup | Where-Object { $_.ResourceGroupName.StartsWith($GroupPrefix) } | Where-Object { $_.ProvisioningState -ne 'Deleting' }
+
+ foreach ($group in $groups) {
+ Write-Host "========================================="
+ $accounts = Get-AzStorageAccount -ResourceGroupName $group.ResourceGroupName
+ if ($accounts) {
+ foreach ($account in $accounts) {
+ if ($WhatIfPreference) {
+ Write-Host "What if: Removing $($account.StorageAccountName) in $($account.ResourceGroupName)"
+ }
+ else {
+ Write-Host "Removing $($account.StorageAccountName) in $($account.ResourceGroupName)"
+ }
+
+ $hasContainers = ($account.Kind -ne "FileStorage")
+
+ # If it doesn't have containers then we can skip the explicit clean-up of this storage account
+ if (!$hasContainers) { continue }
+
+ $ctx = New-AzStorageContext -StorageAccountName $account.StorageAccountName
+
+ $immutableBlobs = $ctx `
+ | Get-AzStorageContainer `
+ | Where-Object { $_.BlobContainerProperties.HasImmutableStorageWithVersioning } `
+ | Get-AzStorageBlob
+ try {
+ foreach ($blob in $immutableBlobs) {
+ Write-Host "Removing legal hold - blob: $($blob.Name), account: $($account.StorageAccountName), group: $($group.ResourceGroupName)"
+ $blob | Set-AzStorageBlobLegalHold -DisableLegalHold | Out-Null
+ }
+ }
+ catch {
+ Write-Warning "User must have 'Storage Blob Data Owner' RBAC permission on subscription or resource group"
+ Write-Error $_
+ throw
+ }
+ # Sometimes we get a 404 blob not found but can still delete containers,
+ # and sometimes we must delete the blob if there's a legal hold.
+ # Try to remove the blob, but keep running regardless.
+ $succeeded = $false
+ for ($attempt = 0; $attempt -lt 2; $attempt++) {
+ if ($succeeded) {
+ break
+ }
+
+ try {
+ Write-Host "Removing immutability policies - account: $($ctx.StorageAccountName), group: $($group.ResourceGroupName)"
+ $null = $ctx | Get-AzStorageContainer | Get-AzStorageBlob | Remove-AzStorageBlobImmutabilityPolicy
+ }
+ catch {}
+
+ try {
+ $ctx | Get-AzStorageContainer | Get-AzStorageBlob | Remove-AzStorageBlob -Force
+ $succeeded = $true
+ }
+ catch {
+ Write-Warning "Failed to remove blobs - account: $($ctx.StorageAccountName), group: $($group.ResourceGroupName)"
+ Write-Warning $_
+ }
+ }
+
+ try {
+ # Use AzRm cmdlet as deletion will only work through ARM with the immutability policies defined on the blobs
+ $ctx | Get-AzStorageContainer | ForEach-Object { Remove-AzRmStorageContainer -Name $_.Name -StorageAccountName $ctx.StorageAccountName -ResourceGroupName $group.ResourceGroupName -Force }
+ }
+ catch {
+ Write-Warning "Container removal failed. Ignoring the error and trying to delete the storage account."
+ Write-Warning $_
+ }
+ Remove-AzStorageAccount -StorageAccountName $account.StorageAccountName -ResourceGroupName $account.ResourceGroupName -Force
+ }
+ }
+ if ($WhatIfPreference) {
+ Write-Host "What if: Removing resource group $($group.ResourceGroupName)"
+ }
+ else {
+ Remove-AzResourceGroup -ResourceGroupName $group.ResourceGroupName -Force -AsJob
+ }
+ }
+}
+
+function SetResourceNetworkAccessRules([string]$ResourceGroupName, [array]$AllowIpRanges, [switch]$CI, [switch]$SetFirewall) {
+ SetStorageNetworkAccessRules -ResourceGroupName $ResourceGroupName -AllowIpRanges $AllowIpRanges -CI:$CI -SetFirewall:$SetFirewall
+}
+
+function SetStorageNetworkAccessRules([string]$ResourceGroupName, [array]$AllowIpRanges, [switch]$CI, [switch]$SetFirewall) {
+ $clientIp = $null
+ $storageAccounts = Retry { Get-AzResource -ResourceGroupName $ResourceGroupName -ResourceType "Microsoft.Storage/storageAccounts" }
+ # Add client IP to storage account when running as local user. Pipeline's have their own vnet with access
+ if ($storageAccounts) {
+ $appliedRule = $false
+ foreach ($account in $storageAccounts) {
+ $properties = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -AccountName $account.Name
+ $rules = Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -AccountName $account.Name
+
+ if ($properties.AllowBlobPublicAccess) {
+ Write-Host "Restricting public blob access in storage account '$($account.Name)'"
+ Set-AzStorageAccount -ResourceGroupName $ResourceGroupName -StorageAccountName $account.Name -AllowBlobPublicAccess $false
+ }
+
+ # In override mode, we only want to capture storage accounts that have had incomplete network rules applied,
+ # otherwise it's not worth updating due to timing and throttling issues.
+ # If the network rules are deny only without any vnet/ip allowances, then we can't ever purge the storage account
+ # when immutable blobs need to be removed.
+ if (!$rules -or !$SetFirewall -or $rules.DefaultAction -eq "Allow") {
+ return
+ }
+
+ # Add firewall rules in cases where existing rules added were incomplete to enable blob removal
+ Write-Host "Restricting network rules in storage account '$($account.Name)' to deny access by default"
+ Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -DefaultAction Deny }
+ if ($CI -and $env:PoolSubnet) {
+ Write-Host "Enabling access to '$($account.Name)' from pipeline subnet $($env:PoolSubnet)"
+ Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -VirtualNetworkResourceId $env:PoolSubnet }
+ $appliedRule = $true
+ }
+ elseif ($AllowIpRanges) {
+ Write-Host "Enabling access to '$($account.Name)' to $($AllowIpRanges.Length) IP ranges"
+ $ipRanges = $AllowIpRanges | ForEach-Object {
+ @{ Action = 'allow'; IPAddressOrRange = $_ }
+ }
+ Retry { Update-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name -IPRule $ipRanges | Out-Null }
+ $appliedRule = $true
+ }
+ elseif (!$CI) {
+ Write-Host "Enabling access to '$($account.Name)' from client IP"
+ $clientIp ??= Retry { Invoke-RestMethod -Uri 'https://icanhazip.com/' } # cloudflare owned ip site
+ $clientIp = $clientIp.Trim()
+ $ipRanges = Get-AzStorageAccountNetworkRuleSet -ResourceGroupName $ResourceGroupName -Name $account.Name
+ if ($ipRanges) {
+ foreach ($range in $ipRanges.IpRules) {
+ if (DoesSubnetOverlap $range.IPAddressOrRange $clientIp) {
+ return
+ }
+ }
+ }
+ Retry { Add-AzStorageAccountNetworkRule -ResourceGroupName $ResourceGroupName -Name $account.Name -IPAddressOrRange $clientIp | Out-Null }
+ $appliedRule = $true
+ }
+ }
+
+ if ($appliedRule) {
+ Write-Host "Sleeping for 15 seconds to allow network rules to take effect"
+ Start-Sleep 15
+ }
+ }
+}
+
+function DoesSubnetOverlap([string]$ipOrCidr, [string]$overlapIp) {
+ [System.Net.IPAddress]$overlapIpAddress = $overlapIp
+ $parsed = $ipOrCidr -split '/'
+ [System.Net.IPAddress]$baseIp = $parsed[0]
+ if ($parsed.Length -eq 1) {
+ return $baseIp -eq $overlapIpAddress
+ }
+
+ $subnet = $parsed[1]
+ $subnetNum = [int]$subnet
+
+ $baseMask = [math]::pow(2, 31)
+ $mask = 0
+ for ($i = 0; $i -lt $subnetNum; $i++) {
+ $mask = $mask + $baseMask;
+ $baseMask = $baseMask / 2
+ }
+
+ return $baseIp.Address -eq ($overlapIpAddress.Address -band ([System.Net.IPAddress]$mask).Address)
+}
diff --git a/eng/common/scripts/Package-Properties.ps1 b/eng/common/scripts/Package-Properties.ps1
index 606998c8ea3c0..0e703a9d43743 100644
--- a/eng/common/scripts/Package-Properties.ps1
+++ b/eng/common/scripts/Package-Properties.ps1
@@ -105,6 +105,30 @@ function Get-PkgProperties
return $null
}
+function Get-PrPkgProperties([string]$InputDiffJson) {
+ $packagesWithChanges = @()
+
+ $allPackageProperties = Get-AllPkgProperties
+ $diff = Get-Content $InputDiffJson | ConvertFrom-Json
+ $targetedFiles = $diff.ChangedFiles
+
+ foreach($pkg in $allPackageProperties)
+ {
+ $pkgDirectory = Resolve-Path "$($pkg.DirectoryPath)"
+
+ foreach($file in $targetedFiles)
+ {
+ $filePath = Resolve-Path (Join-Path $RepoRoot $file)
+ $shouldInclude = $filePath -like "$pkgDirectory*"
+ if ($shouldInclude) {
+ $packagesWithChanges += $pkg
+ }
+ }
+ }
+
+ return $packagesWithChanges
+}
+
# Takes ServiceName and Repo Root Directory
# Returns important properties for each package in the specified service, or entire repo if the serviceName is not specified
# Returns a Table of service key to array values of PS Object with properties @ { pkgName, pkgVersion, pkgDirectoryPath, pkgReadMePath, pkgChangeLogPath }
diff --git a/eng/common/scripts/Save-Package-Properties.ps1 b/eng/common/scripts/Save-Package-Properties.ps1
index 0e8ce26aa654d..c234d8b28ede4 100644
--- a/eng/common/scripts/Save-Package-Properties.ps1
+++ b/eng/common/scripts/Save-Package-Properties.ps1
@@ -15,7 +15,10 @@ filename as track 1 packages (e.g. same artifact name or package name), the
track 2 package properties will be written.
.PARAMETER serviceDirectory
-Service directory in which to search for packages
+Service directory in which to search for packages.
+
+.PARAMETER prDiff
+A file path leading to a file generated from Generate-PR-Diff.json. This parameter takes precedence over serviceDirectory, do not provide both.
.PARAMETER outDirectory
Output location (generally a package artifact directory in DevOps) for JSON
@@ -32,10 +35,10 @@ Verison property in that file.
[CmdletBinding()]
Param (
- [Parameter(Mandatory=$True)]
[string] $serviceDirectory,
[Parameter(Mandatory=$True)]
[string] $outDirectory,
+ [string] $prDiff,
[switch] $addDevVersion
)
@@ -92,7 +95,16 @@ function GetRelativePath($path) {
}
$exportedPaths = @{}
-$allPackageProperties = Get-AllPkgProperties $serviceDirectory
+
+$allPackageProperties = @()
+
+if ($prDiff) {
+ $allPackageProperties = Get-PrPkgProperties $prDiff
+}
+else {
+ $allPackageProperties = Get-AllPkgProperties $serviceDirectory
+}
+
if ($allPackageProperties)
{
if (-not (Test-Path -Path $outDirectory))
@@ -137,6 +149,6 @@ if ($allPackageProperties)
}
else
{
- Write-Error "Package properties are not available for service directory $($serviceDirectory)"
+ Write-Error "Package properties are not available for service directory $serviceDirectory or $prdiff"
exit 1
}
diff --git a/eng/common/scripts/Test-SampleMetadata.ps1 b/eng/common/scripts/Test-SampleMetadata.ps1
index 9e50fa1dce03a..8499b70a4926e 100644
--- a/eng/common/scripts/Test-SampleMetadata.ps1
+++ b/eng/common/scripts/Test-SampleMetadata.ps1
@@ -203,6 +203,7 @@ begin {
"azure-genomics",
"azure-hdinsight",
"azure-hdinsight-rserver",
+ "azure-health-data-services",
"azure-health-insights",
"azure-hpc-cache",
"azure-immersive-reader",
diff --git a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1
index a79db98e7c968..bec510cd958a6 100644
--- a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1
+++ b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1
@@ -75,7 +75,7 @@ function ParseChart([string]$chartFile) {
function MatchesAnnotations([hashtable]$chart, [hashtable]$filters) {
foreach ($filter in $filters.GetEnumerator()) {
- if (!$chart["annotations"] -or $chart["annotations"][$filter.Key] -ne $filter.Value) {
+ if (!$chart["annotations"] -or $chart["annotations"][$filter.Key] -notmatch $filter.Value) {
return $false
}
}
diff --git a/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1 b/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1
index aa426d7b4687d..c67540f3b3e5c 100644
--- a/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1
+++ b/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1
@@ -122,6 +122,12 @@ function DeployStressTests(
}
$clusterGroup = 'rg-stress-cluster-prod'
$subscription = 'Azure SDK Test Resources'
+ } elseif ($environment -eq 'storage') {
+ if ($clusterGroup -or $subscription) {
+ Write-Warning "Overriding cluster group and subscription with defaults for 'storage' environment."
+ }
+ $clusterGroup = 'rg-stress-cluster-storage'
+ $subscription = 'XClient'
} elseif (!$clusterGroup -or !$subscription) {
throw "clusterGroup and subscription parameters must be specified when deploying to an environment that is not pg or prod."
}
diff --git a/eng/common/testproxy/install-test-proxy.ps1 b/eng/common/testproxy/install-test-proxy.ps1
new file mode 100644
index 0000000000000..402e5ddc8cd24
--- /dev/null
+++ b/eng/common/testproxy/install-test-proxy.ps1
@@ -0,0 +1,33 @@
+<#
+.SYNOPSIS
+Installs a standalone version of the test-proxy for use in tests. This function is intended to be used in CI/CD pipelines, and leaves behind
+the pipeline variable PROXY_EXE which contains the path to the test-proxy executable.
+
+.PARAMETER Version
+The version of the proxy to install. Requires a full version to be provided. EG "1.0.0-dev.20240617.1"
+
+.PARAMETER Directory
+The directory within which the test-proxy exe will exist after this function invokes. Defaults to CWD.
+#>
+param(
+ [Parameter(Mandatory = $true)]
+ $Version,
+ [Parameter(Mandatory = $true)]
+ $InstallDirectory
+)
+
+. (Join-Path $PSScriptRoot test-proxy.ps1)
+
+Write-Host "Attempting to download and install version `"$Version`" into `"$InstallDirectory`""
+
+Install-Standalone-TestProxy -Version $Version -Directory $InstallDirectory
+
+$PROXY_EXE = ""
+
+if ($IsWindows) {
+ $PROXY_EXE = Join-Path $InstallDirectory "Azure.Sdk.Tools.TestProxy.exe"
+} else {
+ $PROXY_EXE = Join-Path $InstallDirectory "Azure.Sdk.Tools.TestProxy"
+}
+Write-Host "Downloaded test-proxy available at $PROXY_EXE."
+Write-Host "##vso[task.setvariable variable=PROXY_EXE]$PROXY_EXE"
diff --git a/eng/common/testproxy/test-proxy-standalone-tool.yml b/eng/common/testproxy/test-proxy-standalone-tool.yml
new file mode 100644
index 0000000000000..a836427ad79e5
--- /dev/null
+++ b/eng/common/testproxy/test-proxy-standalone-tool.yml
@@ -0,0 +1,83 @@
+# This template sets variable PROXY_PID to be used for shutdown later.
+parameters:
+ rootFolder: '$(Build.SourcesDirectory)'
+ runProxy: true
+ targetVersion: ''
+ templateRoot: '$(Build.SourcesDirectory)'
+ condition: true
+
+steps:
+ - pwsh: |
+ ${{ parameters.templateRoot }}/eng/common/scripts/trust-proxy-certificate.ps1
+ displayName: 'Language Specific Certificate Trust'
+ condition: and(succeeded(), ${{ parameters.condition }})
+
+ - task: PowerShell@2
+ displayName: 'Override proxy version if necessary'
+ condition: and(succeeded(), ${{ parameters.condition }}, ne('${{ parameters.targetVersion }}', ''))
+ inputs:
+ targetType: filePath
+ filePath: '${{ parameters.templateRoot }}/eng/common/testproxy/scripts/override-proxy-version.ps1'
+ arguments: '-TargetVersion "${{ parameters.targetVersion }}"'
+ pwsh: true
+
+ - pwsh: |
+ $standardVersion = "${{ parameters.templateRoot }}/eng/common/testproxy/target_version.txt"
+ $overrideVersion = "${{ parameters.templateRoot }}/eng/target_proxy_version.txt"
+
+ $version = $(Get-Content $standardVersion -Raw).Trim()
+
+ if (Test-Path $overrideVersion) {
+ $version = $(Get-Content $overrideVersion -Raw).Trim()
+ }
+
+ Write-Host "Installing test-proxy version $version"
+ ${{ parameters.templateRoot }}/eng/common/testproxy/install-test-proxy.ps1 -Version $version -InstallDirectory $(Build.BinariesDirectory)/test-proxy
+ displayName: "Install test-proxy"
+ condition: and(succeeded(), ${{ parameters.condition }})
+
+ - pwsh: |
+ Write-Host "##vso[task.prependpath]$(Build.BinariesDirectory)/test-proxy"
+ displayName: "Prepend path with test-proxy tool install location"
+
+ - ${{ if eq(parameters.runProxy, 'true') }}:
+ - pwsh: |
+ Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Path]${{ parameters.templateRoot }}/eng/common/testproxy/dotnet-devcert.pfx"
+ Write-Host "##vso[task.setvariable variable=ASPNETCORE_Kestrel__Certificates__Default__Password]password"
+ Write-Host "##vso[task.setvariable variable=PROXY_MANUAL_START]true"
+ displayName: 'Configure Kestrel and PROXY_MANUAL_START Variables'
+ condition: and(succeeded(), ${{ parameters.condition }})
+
+ - pwsh: |
+ $Process = Start-Process $(PROXY_EXE) `
+ -ArgumentList "start -u --storage-location ${{ parameters.rootFolder }}" `
+ -NoNewWindow -PassThru -RedirectStandardOutput ${{ parameters.rootFolder }}/test-proxy.log
+
+ Write-Host "##vso[task.setvariable variable=PROXY_PID]$($Process.Id)"
+ displayName: 'Run the testproxy - windows'
+ condition: and(succeeded(), eq(variables['Agent.OS'],'Windows_NT'), ${{ parameters.condition }})
+
+ # nohup does NOT continue beyond the current session if you use it within powershell
+ - bash: |
+ nohup $(PROXY_EXE) &>${{ parameters.rootFolder }}/test-proxy.log &
+
+ echo $! > $(Build.SourcesDirectory)/test-proxy.pid
+ echo "##vso[task.setvariable variable=PROXY_PID]$(cat $(Build.SourcesDirectory)/test-proxy.pid)"
+ displayName: "Run the testproxy - linux/mac"
+ condition: and(succeeded(), ne(variables['Agent.OS'],'Windows_NT'), ${{ parameters.condition }})
+ workingDirectory: "${{ parameters.rootFolder }}"
+
+ - pwsh: |
+ for ($i = 0; $i -lt 10; $i++) {
+ try {
+ Invoke-WebRequest -Uri "http://localhost:5000/Admin/IsAlive" | Out-Null
+ exit 0
+ } catch {
+ Write-Warning "Failed to successfully connect to test proxy. Retrying..."
+ Start-Sleep 6
+ }
+ }
+ Write-Error "Could not connect to test proxy."
+ exit 1
+ displayName: Test Proxy IsAlive
+ condition: and(succeeded(), ${{ parameters.condition }})
diff --git a/eng/common/testproxy/test-proxy.ps1 b/eng/common/testproxy/test-proxy.ps1
new file mode 100644
index 0000000000000..f1bf1eca8fd4f
--- /dev/null
+++ b/eng/common/testproxy/test-proxy.ps1
@@ -0,0 +1,162 @@
+Set-StrictMode -Version 4
+$AVAILABLE_TEST_PROXY_BINARIES = @{
+ "Windows" = @{
+ "AMD64" = @{
+ "system" = "Windows"
+ "machine" = "AMD64"
+ "file_name" = "test-proxy-standalone-win-x64.zip"
+ "executable" = "Azure.Sdk.Tools.TestProxy.exe"
+ }
+ }
+ "Linux" = @{
+ "X86_64" = @{
+ "system" = "Linux"
+ "machine" = "X86_64"
+ "file_name" = "test-proxy-standalone-linux-x64.tar.gz"
+ "executable" = "Azure.Sdk.Tools.TestProxy"
+ }
+ "ARM64" = @{
+ "system" = "Linux"
+ "machine" = "ARM64"
+ "file_name" = "test-proxy-standalone-linux-arm64.tar.gz"
+ "executable" = "Azure.Sdk.Tools.TestProxy"
+ }
+ }
+ "Darwin" = @{
+ "X86_64" = @{
+ "system" = "Darwin"
+ "machine" = "X86_64"
+ "file_name" = "test-proxy-standalone-osx-x64.zip"
+ "executable" = "Azure.Sdk.Tools.TestProxy"
+ }
+ "ARM64" = @{
+ "system" = "Darwin"
+ "machine" = "ARM64"
+ "file_name" = "test-proxy-standalone-osx-arm64.zip"
+ "executable" = "Azure.Sdk.Tools.TestProxy"
+ }
+ }
+}
+
+function Get-SystemArchitecture {
+ $unameOutput = uname -m
+ switch ($unameOutput) {
+ "x86_64" { return "X86_64" }
+ "aarch64" { return "ARM64" }
+ "arm64" { return "ARM64" }
+ default { throw "Unable to determine system architecture. uname -m returned $unameOutput." }
+ }
+}
+
+function Get-Proxy-Meta () {
+ $ErrorActionPreferenceDefault = $ErrorActionPreference
+ $ErrorActionPreference = "Stop"
+
+ $os = "unknown"
+ $machine = Get-SystemArchitecture
+
+ if ($IsWindows) {
+ $os = "Windows"
+ # we only support x64 on windows, if that doesn't work the platform is unsupported
+ $machine = "AMD64"
+ } elseif ($IsLinux) {
+ $os = "Linux"
+ } elseif ($IsMacOS) {
+ $os = "Darwin"
+ }
+
+ $ErrorActionPreference = $ErrorActionPreferenceDefault
+
+ return $AVAILABLE_TEST_PROXY_BINARIES[$os][$machine]
+}
+
+function Get-Proxy-Url (
+ [Parameter(mandatory=$true)]$Version
+) {
+ $systemDetails = Get-Proxy-Meta
+
+ $file = $systemDetails.file_name
+ $url = "https://github.com/Azure/azure-sdk-tools/releases/download/Azure.Sdk.Tools.TestProxy_$Version/$file"
+
+ return $url
+}
+
+function Cleanup-Directory ($path) {
+ if (Test-Path -Path $path) {
+ Remove-Item -Path $path -Recurse -Force
+ }
+ New-Item -ItemType Directory -Path $path -Force
+}
+
+function Is-Work-Necessary (
+ [Parameter(mandatory=$true)]
+ $Version,
+ [Parameter(mandatory=$true)]
+ $Directory
+) {
+ $savedVersionTxt = Join-Path $Directory "downloaded_version.txt"
+ if (Test-Path $savedVersionTxt) {
+ $result = (Get-Content -Raw $savedVersionTxt).Trim()
+
+ if ($result -eq $Version) {
+ return $false
+ }
+ }
+
+ return $true
+}
+
+<#
+.SYNOPSIS
+Installs a standalone version of the test-proxy.
+.PARAMETER Version
+The version of the proxy to install. Requires a full version to be provided. EG "1.0.0-dev.20240617.1"
+.PARAMETER Directory
+The directory within which the test-proxy exe will exist after this function invokes. Defaults to "."
+#>
+function Install-Standalone-TestProxy (
+ [Parameter(mandatory=$true)]
+ $Version,
+ $Directory="."
+) {
+ $ErrorActionPreference = "Stop"
+ $systemDetails = Get-Proxy-Meta
+
+ if (!(Test-Path $Directory) -and $Directory -ne ".") {
+ New-Item -ItemType Directory -Path $Directory -Force
+ }
+
+ $downloadFolder = Resolve-Path $Directory
+ $downloadUrl = Get-Proxy-Url $Version
+ $downloadFile = $downloadUrl.Split('/')[-1]
+ $downloadLocation = Join-Path $downloadFolder $downloadFile
+ $savedVersionTxt = Join-Path $downloadFolder "downloaded_version.txt"
+
+ if (Is-Work-Necessary $version $downloadFolder) {
+ Write-Host "Commencing installation of `"$Version`" to `"$downloadFolder`" from $downloadUrl."
+ Invoke-WebRequest -Uri $downloadUrl -OutFile $downloadLocation
+
+ if ($downloadFile -like "*.zip") {
+ Expand-Archive -Path $downloadLocation -DestinationPath $downloadFolder -Force
+ } elseif ($downloadFile -like "*.tar.gz") {
+ tar -xzf $downloadLocation -C $downloadFolder
+ } else {
+ throw "Unsupported file format"
+ }
+
+ # Remove the downloaded file after extraction
+ Remove-Item -Path $downloadLocation -Force
+
+ # Record downloaded version
+ Set-Content -Path $savedVersionTxt -Value $Version
+
+ # Set executable permissions if on macOS (Darwin)
+ $executable_path = Join-Path $downloadFolder $systemDetails.executable
+ if ($IsMacOS) {
+ chmod 755 $executable_path
+ }
+ }
+ else {
+ Write-Host "Target version `"$Version`" already present in target directory `"$downloadFolder.`""
+ }
+}
diff --git a/eng/emitter-package-lock.json b/eng/emitter-package-lock.json
index a8dc5b369e2ce..b645c088e100a 100644
--- a/eng/emitter-package-lock.json
+++ b/eng/emitter-package-lock.json
@@ -5,64 +5,64 @@
"packages": {
"": {
"dependencies": {
- "@azure-tools/typespec-csharp": "0.2.0-beta.20240701.1"
+ "@azure-tools/typespec-csharp": "0.2.0-beta.20240719.2"
},
"devDependencies": {
- "@azure-tools/typespec-autorest": "0.43.0",
- "@azure-tools/typespec-azure-core": "0.43.0",
- "@azure-tools/typespec-azure-resource-manager": "0.43.0",
- "@azure-tools/typespec-azure-rulesets": "0.43.0",
- "@azure-tools/typespec-client-generator-core": "0.43.1",
- "@typespec/compiler": "0.57.0",
- "@typespec/http": "0.57.0",
- "@typespec/openapi": "0.57.0",
- "@typespec/rest": "0.57.0",
- "@typespec/versioning": "0.57.0",
- "@typespec/xml": "0.57.0"
+ "@azure-tools/typespec-autorest": "0.44.0",
+ "@azure-tools/typespec-azure-core": "0.44.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.44.0",
+ "@azure-tools/typespec-azure-rulesets": "0.44.0",
+ "@azure-tools/typespec-client-generator-core": "0.44.1",
+ "@typespec/compiler": "0.58.0",
+ "@typespec/http": "0.58.0",
+ "@typespec/openapi": "0.58.0",
+ "@typespec/rest": "0.58.0",
+ "@typespec/versioning": "0.58.0",
+ "@typespec/xml": "0.58.0"
}
},
"node_modules/@autorest/csharp": {
- "version": "3.0.0-beta.20240701.1",
- "resolved": "https://registry.npmjs.org/@autorest/csharp/-/csharp-3.0.0-beta.20240701.1.tgz",
- "integrity": "sha512-ouoCZ1j0XtLSgTm8fFwxOCf2Ad+e4p+q7pRhiHt8Zr5JKWyupwl1GULu+cGC8VtjbZYayy6ovRkLZOKaq7NdlQ=="
+ "version": "3.0.0-beta.20240719.2",
+ "resolved": "https://registry.npmjs.org/@autorest/csharp/-/csharp-3.0.0-beta.20240719.2.tgz",
+ "integrity": "sha512-RtNW9RcwfUE7c1L/PyJMWu3Vi+Np13B0w+shagHpsEf8LwX2kfj30j1fWhA94ZHWDc89Bp6Z9E4GMEhsa04Oug=="
},
"node_modules/@azure-tools/typespec-autorest": {
- "version": "0.43.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.43.0.tgz",
- "integrity": "sha512-tZ9uXXOdxu2y01W9n3mzXf+IEY2MQkP/JaQaKlcOx2+dbklHNQWSDU0Vm6Gmm6l//XiF9QiI8653BiuO97czyw==",
+ "version": "0.44.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-autorest/-/typespec-autorest-0.44.0.tgz",
+ "integrity": "sha512-GlIQayA6HfKndq1T2qHBXtL6n8gTiShUEhi30zncoBaIUnwumkXSnx18uCQl0EzFmvAqLYt3kbHqQNzZIdGaeQ==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "~0.43.0",
- "@azure-tools/typespec-azure-resource-manager": "~0.43.0",
- "@azure-tools/typespec-client-generator-core": "~0.43.0",
- "@typespec/compiler": "~0.57.0",
- "@typespec/http": "~0.57.0",
- "@typespec/openapi": "~0.57.0",
- "@typespec/rest": "~0.57.0",
- "@typespec/versioning": "~0.57.0"
+ "@azure-tools/typespec-azure-core": "~0.44.0",
+ "@azure-tools/typespec-azure-resource-manager": "~0.44.0",
+ "@azure-tools/typespec-client-generator-core": "~0.44.0",
+ "@typespec/compiler": "~0.58.0",
+ "@typespec/http": "~0.58.0",
+ "@typespec/openapi": "~0.58.0",
+ "@typespec/rest": "~0.58.0",
+ "@typespec/versioning": "~0.58.0"
}
},
"node_modules/@azure-tools/typespec-azure-core": {
- "version": "0.43.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.43.0.tgz",
- "integrity": "sha512-B1r0i3segJ7RuNXxcAMBy8H2t+jTkaf74dkyUWD0HIFPkhETN0uR59nuor+s+LoLU8yI4JypOFSNZt6e1rod8w==",
+ "version": "0.44.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-core/-/typespec-azure-core-0.44.0.tgz",
+ "integrity": "sha512-d11QK2v5fOZH8YUqf42FsqHEirKCHzeKFq4Uo/51BXCXmJJahsTaFMAG2M0GoJe8tmTHeMijStnVMfzcGNqCAA==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.57.0",
- "@typespec/http": "~0.57.0",
- "@typespec/rest": "~0.57.0"
+ "@typespec/compiler": "~0.58.0",
+ "@typespec/http": "~0.58.0",
+ "@typespec/rest": "~0.58.0"
}
},
"node_modules/@azure-tools/typespec-azure-resource-manager": {
- "version": "0.43.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.43.0.tgz",
- "integrity": "sha512-0GQL+/o1u+PAB63FpYz3sy3ZgZvCtk5T4sDAnICnV23v2YWIONDMUfxxd0x40xJbY6PkcwwHDpBLNMqajf2H6A==",
+ "version": "0.44.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-resource-manager/-/typespec-azure-resource-manager-0.44.0.tgz",
+ "integrity": "sha512-m4dG41at6En1swbxlvCDl1v4Mvrfp17acDnRxEcd4SdKP2R9eVS2mBy1tSuFtMcJlOnoBZ5CxQgk+Osg/Q9nmA==",
"dev": true,
"dependencies": {
"change-case": "~5.4.4",
@@ -72,33 +72,33 @@
"node": ">=18.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "~0.43.0",
- "@typespec/compiler": "~0.57.0",
- "@typespec/http": "~0.57.0",
- "@typespec/openapi": "~0.57.0",
- "@typespec/rest": "~0.57.0",
- "@typespec/versioning": "~0.57.0"
+ "@azure-tools/typespec-azure-core": "~0.44.0",
+ "@typespec/compiler": "~0.58.0",
+ "@typespec/http": "~0.58.0",
+ "@typespec/openapi": "~0.58.0",
+ "@typespec/rest": "~0.58.0",
+ "@typespec/versioning": "~0.58.0"
}
},
"node_modules/@azure-tools/typespec-azure-rulesets": {
- "version": "0.43.0",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.43.0.tgz",
- "integrity": "sha512-yh0dNQIM4hRDWATh/tkONP991uMxFDHY8BkC0eWtIpfTjQTuR2PlGhrLgMxHT2Q5cCusfkNWeFvKDYlxKeoFLA==",
+ "version": "0.44.0",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-azure-rulesets/-/typespec-azure-rulesets-0.44.0.tgz",
+ "integrity": "sha512-ZFiT+rtLIq3uP4uSr85i7w+3r02BEqERePaCtTyjexo2IBz0lwQ5Nn/5ujfuDDSy+3daoC2bQy8hw/BGWg9/Ng==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "~0.43.0",
- "@azure-tools/typespec-azure-resource-manager": "~0.43.0",
- "@azure-tools/typespec-client-generator-core": "~0.43.0",
- "@typespec/compiler": "~0.57.0"
+ "@azure-tools/typespec-azure-core": "~0.44.0",
+ "@azure-tools/typespec-azure-resource-manager": "~0.44.0",
+ "@azure-tools/typespec-client-generator-core": "~0.44.0",
+ "@typespec/compiler": "~0.58.0"
}
},
"node_modules/@azure-tools/typespec-client-generator-core": {
- "version": "0.43.1",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.43.1.tgz",
- "integrity": "sha512-NwNN/fIOcjOU/8o6ViCuEAAQl6zmu2X1QKPuXxeSy8ssDwrTiX9Ho2X/7IZM4XmOArKTtgmTkNcSnnmuj5dsGg==",
+ "version": "0.44.1",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.44.1.tgz",
+ "integrity": "sha512-hpDYS4J329kPnXMAndburITh81jgOloxLrv6QXJadurnFhxFHb8AycGO8VWgFYTf04cWd7yDx7HutzGSN9C7TQ==",
"dev": true,
"dependencies": {
"change-case": "~5.4.4",
@@ -108,20 +108,20 @@
"node": ">=18.0.0"
},
"peerDependencies": {
- "@azure-tools/typespec-azure-core": "~0.43.0",
- "@typespec/compiler": "~0.57.0",
- "@typespec/http": "~0.57.0",
- "@typespec/rest": "~0.57.0",
- "@typespec/versioning": "~0.57.0",
- "@typespec/xml": "~0.57.0"
+ "@azure-tools/typespec-azure-core": "~0.44.0",
+ "@typespec/compiler": "~0.58.0",
+ "@typespec/http": "~0.58.0",
+ "@typespec/rest": "~0.58.0",
+ "@typespec/versioning": "~0.58.0"
}
},
"node_modules/@azure-tools/typespec-csharp": {
- "version": "0.2.0-beta.20240701.1",
- "resolved": "https://registry.npmjs.org/@azure-tools/typespec-csharp/-/typespec-csharp-0.2.0-beta.20240701.1.tgz",
- "integrity": "sha512-ptniTQC3MpfbUfN6aUCW9sEcx3D61l0W3DnTgJPj54HWS0eGI6EDcHoVsD69a4zop9qechv7XnLyQeG07cKAtA==",
+ "version": "0.2.0-beta.20240719.2",
+ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-csharp/-/typespec-csharp-0.2.0-beta.20240719.2.tgz",
+ "integrity": "sha512-6c+wVVNvMv8yr+8zmDlMyJHgpWOGNN9sOIUN7PD5RQctuxf65yKXJTEscOXRY8MBCCa4ctVE0UBYipP+bJph1w==",
"dependencies": {
- "@autorest/csharp": "3.0.0-beta.20240701.1",
+ "@autorest/csharp": "3.0.0-beta.20240719.2",
+ "@typespec/http-client-csharp": "0.1.9-alpha.20240718.1",
"json-serialize-refs": "0.1.0-0"
},
"peerDependencies": {
@@ -223,23 +223,24 @@
}
},
"node_modules/@typespec/compiler": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.57.0.tgz",
- "integrity": "sha512-Z5L7J90Ol21IbzU+rBD2wzKy2vJ2Yg2FIzi+yB5rtb7/c4oBea/CgEByMVHBtT7uw45ZXJpHOiepuGSPVXw2EA==",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.58.0.tgz",
+ "integrity": "sha512-kyyXwjy9mLwOTYZyXbfPzGr2dpRwj2DASvUAKxax/BVKFLVxTfecIZKwWCLB42RxgraqYx2/t4RhviH+QbEtqA==",
"dev": true,
"dependencies": {
- "@babel/code-frame": "~7.24.2",
- "ajv": "~8.13.0",
+ "@babel/code-frame": "~7.24.7",
+ "ajv": "~8.16.0",
"change-case": "~5.4.4",
- "globby": "~14.0.1",
+ "globby": "~14.0.2",
"mustache": "~4.2.0",
"picocolors": "~1.0.1",
- "prettier": "~3.2.5",
+ "prettier": "~3.3.2",
"prompts": "~2.4.2",
"semver": "^7.6.2",
+ "temporal-polyfill": "^0.2.5",
"vscode-languageserver": "~9.0.1",
"vscode-languageserver-textdocument": "~1.0.11",
- "yaml": "~2.4.2",
+ "yaml": "~2.4.5",
"yargs": "~17.7.2"
},
"bin": {
@@ -251,71 +252,88 @@
}
},
"node_modules/@typespec/http": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@typespec/http/-/http-0.57.0.tgz",
- "integrity": "sha512-k3bWOTPNqlRB3/TmrXVBtObmxj2J20l2FnhGXvs+tjdtbXLxCQWmvQz6xlne9nkLAtWVB/pQRUn+oMJfhWta3w==",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@typespec/http/-/http-0.58.0.tgz",
+ "integrity": "sha512-jQpkugg9AZVrNDMkDIgZRpIoRkkU2b0LtKWqMGg33MItYj9/DYSgDtY7xb7oCBppRtFFZ/h138HyhYl3zQxZRg==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.57.0"
+ "@typespec/compiler": "~0.58.0"
+ }
+ },
+ "node_modules/@typespec/http-client-csharp": {
+ "version": "0.1.9-alpha.20240718.1",
+ "resolved": "https://registry.npmjs.org/@typespec/http-client-csharp/-/http-client-csharp-0.1.9-alpha.20240718.1.tgz",
+ "integrity": "sha512-4bB2Q/ZJiQs63tLQKB4ao1DtbIhSipKM9zsHComz7N3p95rvVw2a2EnXCfqqgmJgHERgykcLB0X8CljuJGPHMA==",
+ "dependencies": {
+ "json-serialize-refs": "0.1.0-0"
+ },
+ "peerDependencies": {
+ "@azure-tools/typespec-azure-core": ">=0.36.0 <1.0.0",
+ "@azure-tools/typespec-client-generator-core": ">=0.36.0 <1.0.0",
+ "@typespec/compiler": ">=0.50.0 <1.0.0",
+ "@typespec/http": ">=0.50.0 <1.0.0",
+ "@typespec/openapi": ">=0.50.0 <1.0.0",
+ "@typespec/rest": ">=0.50.0 <1.0.0",
+ "@typespec/versioning": ">=0.50.0 <1.0.0"
}
},
"node_modules/@typespec/openapi": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-0.57.0.tgz",
- "integrity": "sha512-35wK/BqjOXSlhWuGMwoYN3FSgIYFOKtw8ot4ErcgmxAGuKaS2GkUhZvtQJXUn2ByU0Fl4jqslPmTz8SEcz7rbw==",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@typespec/openapi/-/openapi-0.58.0.tgz",
+ "integrity": "sha512-gu6nXfmpfZrfq8Etpgl1dpMfsXii7EzQyhZgsPhIy7ZwV5bDmFk1/oyhTqIpWrnr4pD3r151T2BQjzJefjf15A==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.57.0",
- "@typespec/http": "~0.57.0"
+ "@typespec/compiler": "~0.58.0",
+ "@typespec/http": "~0.58.0"
}
},
"node_modules/@typespec/rest": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.57.0.tgz",
- "integrity": "sha512-mZj76Kf+cmH38pYA6LT8Zz7QjuR3fdQo5bc8pXhKMwLq9vRqNLz6Z9InbOeo8zY+xP0GfUwEU9kXczmCc8gyRA==",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@typespec/rest/-/rest-0.58.0.tgz",
+ "integrity": "sha512-QBxkED0/KQKG22pwzis0n7BY+uLMSZZPSoVe/ESBFika9n5/yyeQ0l58xbFFwwfxAxe4xwuZ5PNwTdEXZbzr5g==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.57.0",
- "@typespec/http": "~0.57.0"
+ "@typespec/compiler": "~0.58.0",
+ "@typespec/http": "~0.58.0"
}
},
"node_modules/@typespec/versioning": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.57.0.tgz",
- "integrity": "sha512-kk6zCNSwcqqYB9isNNagTy+Zv6wEIRA4NkcZ/X1riTj2zhJwKsIFNXQWm1yxpZn+BY4+1QtuaQHuBLo8HbgR/w==",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@typespec/versioning/-/versioning-0.58.0.tgz",
+ "integrity": "sha512-brnQQ3wKWh4AbgqmnVLj+8zyOaDk9VPWg4QBecdQxzz7PrSrlAzIzRfeIyr67+hwi/0SvkTAB6GNH7YYTypKGA==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.57.0"
+ "@typespec/compiler": "~0.58.0"
}
},
"node_modules/@typespec/xml": {
- "version": "0.57.0",
- "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.57.0.tgz",
- "integrity": "sha512-itsFsahgBRNREoF4FXUgELmNGtOMmzNnhxT+NeAl4f7EXmz/mu1y/k9hWmDXWr+DB0Oq1r0Fc+D0TSl51szzlQ==",
+ "version": "0.58.0",
+ "resolved": "https://registry.npmjs.org/@typespec/xml/-/xml-0.58.0.tgz",
+ "integrity": "sha512-2OG2JXypMZR90nVoIVwxc+6Sc4lsggLPuh1yhw1BKiv2NBAuSdfcK4MuiIooqR206QJw9xM8qtNxlUeDb00DDw==",
"dev": true,
"engines": {
"node": ">=18.0.0"
},
"peerDependencies": {
- "@typespec/compiler": "~0.57.0"
+ "@typespec/compiler": "~0.58.0"
}
},
"node_modules/ajv": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz",
- "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz",
+ "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -672,9 +690,9 @@
}
},
"node_modules/prettier": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
- "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"
@@ -780,9 +798,9 @@
}
},
"node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
@@ -847,6 +865,21 @@
"node": ">=4"
}
},
+ "node_modules/temporal-polyfill": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/temporal-polyfill/-/temporal-polyfill-0.2.5.tgz",
+ "integrity": "sha512-ye47xp8Cb0nDguAhrrDS1JT1SzwEV9e26sSsrWzVu+yPZ7LzceEcH0i2gci9jWfOfSCCgM3Qv5nOYShVUUFUXA==",
+ "dev": true,
+ "dependencies": {
+ "temporal-spec": "^0.2.4"
+ }
+ },
+ "node_modules/temporal-spec": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/temporal-spec/-/temporal-spec-0.2.4.tgz",
+ "integrity": "sha512-lDMFv4nKQrSjlkHKAlHVqKrBG4DyFfa9F74cmBZ3Iy3ed8yvWnlWSIdi4IKfSqwmazAohBNwiN64qGx4y5Q3IQ==",
+ "dev": true
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
diff --git a/eng/emitter-package.json b/eng/emitter-package.json
index 41ff125278ff5..1c4999761389c 100644
--- a/eng/emitter-package.json
+++ b/eng/emitter-package.json
@@ -1,19 +1,19 @@
{
"main": "dist/src/index.js",
"dependencies": {
- "@azure-tools/typespec-csharp": "0.2.0-beta.20240701.1"
+ "@azure-tools/typespec-csharp": "0.2.0-beta.20240719.2"
},
"devDependencies": {
- "@azure-tools/typespec-autorest": "0.43.0",
- "@azure-tools/typespec-azure-core": "0.43.0",
- "@azure-tools/typespec-azure-resource-manager": "0.43.0",
- "@azure-tools/typespec-azure-rulesets": "0.43.0",
- "@azure-tools/typespec-client-generator-core": "0.43.1",
- "@typespec/compiler": "0.57.0",
- "@typespec/http": "0.57.0",
- "@typespec/openapi": "0.57.0",
- "@typespec/rest": "0.57.0",
- "@typespec/versioning": "0.57.0",
- "@typespec/xml": "0.57.0"
+ "@azure-tools/typespec-autorest": "0.44.0",
+ "@azure-tools/typespec-azure-core": "0.44.0",
+ "@azure-tools/typespec-azure-resource-manager": "0.44.0",
+ "@azure-tools/typespec-azure-rulesets": "0.44.0",
+ "@azure-tools/typespec-client-generator-core": "0.44.1",
+ "@typespec/compiler": "0.58.0",
+ "@typespec/http": "0.58.0",
+ "@typespec/openapi": "0.58.0",
+ "@typespec/rest": "0.58.0",
+ "@typespec/versioning": "0.58.0",
+ "@typespec/xml": "0.58.0"
}
}
diff --git a/eng/pipelines/mgmt.yml b/eng/pipelines/mgmt.yml
index fbc0c7032f9b7..c1270ac61e57c 100644
--- a/eng/pipelines/mgmt.yml
+++ b/eng/pipelines/mgmt.yml
@@ -3,7 +3,7 @@ resources:
- repository: azure-sdk-build-tools
type: git
name: internal/azure-sdk-build-tools
- ref: refs/tags/azure-sdk-build-tools_20240628.1
+ ref: refs/tags/azure-sdk-build-tools_20240711.1
parameters:
- name: ShouldPublishToNuget
diff --git a/eng/pipelines/templates/jobs/ci.yml b/eng/pipelines/templates/jobs/ci.yml
index f93c09aed4390..817a8781df355 100644
--- a/eng/pipelines/templates/jobs/ci.yml
+++ b/eng/pipelines/templates/jobs/ci.yml
@@ -103,7 +103,7 @@ jobs:
parameters:
LogFilePath: $(Build.ArtifactStagingDirectory)/pack.binlog
- script: >-
- dotnet pack eng/service.proj -warnaserror
+ dotnet pack eng/service.proj
/p:ValidateRunApiCompat=true
/p:SDKType=${{ parameters.SDKType }}
/p:ServiceDirectory=${{ parameters.ServiceDirectory }}
@@ -239,7 +239,7 @@ jobs:
LogFilePath: $(Build.ArtifactStagingDirectory)/rebuild.binlog
- script: >-
- dotnet build eng/service.proj -warnaserror
+ dotnet build eng/service.proj
/t:rebuild
/p:DebugType=none
/p:SDKType=${{ parameters.SDKType }}
diff --git a/eng/pipelines/templates/jobs/mgmt-release.yml b/eng/pipelines/templates/jobs/mgmt-release.yml
index 180d914069fb7..6fa22b788584d 100644
--- a/eng/pipelines/templates/jobs/mgmt-release.yml
+++ b/eng/pipelines/templates/jobs/mgmt-release.yml
@@ -39,21 +39,11 @@ jobs:
- ${{ if and(eq(parameters.ShouldPublishToNuget, 'true'), eq(variables['Build.Repository.Name'], 'Azure/azure-sdk-for-net')) }}:
- - task: Powershell@2
- displayName: 'Verify Package Tags and Create Git Releases'
- inputs:
- filePath: ${{ parameters.BuildToolsPath }}/scripts/create-tags-and-git-release.ps1
- arguments: >
- -artifactLocation '$(PIPELINE.WORKSPACE)/packages'
- -workingDirectory $(System.DefaultWorkingDirectory)
- -packageRepository 'Nuget'
- -releaseSha '$(Build.SourceVersion)'
- -repoOwner 'Azure'
- -repoName 'azure-sdk-for-net'
- pwsh: true
- env:
- GH_TOKEN: $(azuresdk-github-pat)
- condition: and(succeeded(), ne(variables['SkipCreateTagAndGitRelease'], 'true'))
+ - template: /eng/common/pipelines/templates/steps/create-tags-and-git-release.yml
+ parameters:
+ ArtifactLocation: '$(PIPELINE.WORKSPACE)/packages'
+ PackageRepository: Nuget
+ ReleaseSha: $(Build.SourceVersion)
- template: pipelines/steps/publish-symbols.yml@azure-sdk-build-tools
displayName: 'Upload Symbols'
diff --git a/eng/pipelines/templates/stages/1es-redirect.yml b/eng/pipelines/templates/stages/1es-redirect.yml
index 45faae96606e6..22f1d10268f57 100644
--- a/eng/pipelines/templates/stages/1es-redirect.yml
+++ b/eng/pipelines/templates/stages/1es-redirect.yml
@@ -11,7 +11,7 @@ resources:
- repository: azure-sdk-build-tools
type: git
name: internal/azure-sdk-build-tools
- ref: refs/tags/azure-sdk-build-tools_20240628.1
+ ref: refs/tags/azure-sdk-build-tools_20240711.1
parameters:
- name: stages
diff --git a/eng/pipelines/templates/stages/archetype-net-release.yml b/eng/pipelines/templates/stages/archetype-net-release.yml
index 7be7e0de1634c..fbb4e076b5475 100644
--- a/eng/pipelines/templates/stages/archetype-net-release.yml
+++ b/eng/pipelines/templates/stages/archetype-net-release.yml
@@ -105,7 +105,6 @@ stages:
ArtifactLocation: $(Pipeline.Workspace)/${{parameters.ArtifactName}}-signed/${{artifact.name}}
PackageRepository: Nuget
ReleaseSha: $(Build.SourceVersion)
- RepoId: Azure/azure-sdk-for-net
- ${{if ne(artifact.skipPublishPackage, 'true')}}:
- deployment: PublishPackage
@@ -335,7 +334,8 @@ stages:
parameters:
PackageInfoLocations:
- ${{ each artifact in parameters.Artifacts }}:
- - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json
+ - ${{if ne(artifact.skipPublishDocMs, 'true')}}:
+ - $(Pipeline.Workspace)/${{parameters.ArtifactName}}/PackageInfo/${{artifact.name}}.json
WorkingDirectory: $(System.DefaultWorkingDirectory)
TargetDocRepoOwner: ${{parameters.TargetDocRepoOwner}}
TargetDocRepoName: ${{parameters.TargetDocRepoName}}
diff --git a/eng/pipelines/templates/stages/archetype-sdk-tests.yml b/eng/pipelines/templates/stages/archetype-sdk-tests.yml
index 686116accac59..65f3a21060165 100644
--- a/eng/pipelines/templates/stages/archetype-sdk-tests.yml
+++ b/eng/pipelines/templates/stages/archetype-sdk-tests.yml
@@ -60,7 +60,7 @@ parameters:
- eng/common/TestResources/sub-config/AzurePublicMsft.json
Preview:
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources-preview)
- ServiceConnection: azure-sdk-tests
+ ServiceConnection: azure-sdk-tests-preview
Canary:
SubscriptionConfiguration: $(sub-config-azure-cloud-test-resources)
Location: 'eastus2euap'
diff --git a/eng/pipelines/templates/steps/archetype-sdk-docs.yml b/eng/pipelines/templates/steps/archetype-sdk-docs.yml
index dd16ff8d2f161..9a67b36e7d805 100644
--- a/eng/pipelines/templates/steps/archetype-sdk-docs.yml
+++ b/eng/pipelines/templates/steps/archetype-sdk-docs.yml
@@ -18,7 +18,6 @@ steps:
-ArtifactName '${{artifact.name}}'
-ServiceDirectory '${{parameters.ServiceDirectory}}'
-ArtifactsDirectoryName '${{artifact.directoryName}}'
- -LibType '${{parameters.LibType}}'
-RepoRoot $(Build.SourcesDirectory)
-BinDirectory $(Build.BinariesDirectory)
-DocGenDir ${{parameters.DocGenerationDir}}
diff --git a/eng/scripts/Update-PkgVersion.ps1 b/eng/scripts/Update-PkgVersion.ps1
index d39c726d5455e..ac429a153eed2 100644
--- a/eng/scripts/Update-PkgVersion.ps1
+++ b/eng/scripts/Update-PkgVersion.ps1
@@ -53,6 +53,11 @@ $csproj.Load($csprojPath)
$propertyGroup = ($csproj | Select-Xml "Project/PropertyGroup/Version").Node.ParentNode
$packageVersion = $propertyGroup.Version
+if (!$packageVersion) {
+ Write-Error "Could not find the element in your project $csprojPath, be sure it has a Version property and not a VersionPrefix property."
+ exit 1
+}
+
$packageSemVer = [AzureEngSemanticVersion]::new($packageVersion)
$packageOldSemVer = [AzureEngSemanticVersion]::new($packageVersion)
Write-Host "Current Version: ${PackageVersion}"
diff --git a/eng/scripts/automation/GenerateAndBuildLib.ps1 b/eng/scripts/automation/GenerateAndBuildLib.ps1
index 1add91eab06a6..050adeaecc377 100644
--- a/eng/scripts/automation/GenerateAndBuildLib.ps1
+++ b/eng/scripts/automation/GenerateAndBuildLib.ps1
@@ -846,15 +846,22 @@ function GeneratePackage()
if ( $serviceType -eq "resource-manager" ) {
$ciFilePath = "sdk/$service/ci.mgmt.yml"
}
- $generatedSDKPackages.Add(@{packageName="$packageName";
- result=$result;
- path=@("$path", "$ciFilePath");
- packageFolder="$projectFolder";
- artifacts=$artifacts;
- apiViewArtifact=$apiViewArtifact;
- language=".Net";
- changelog= $changelog;
- installInstructions = $installInstructions})
+
+ $packageDetails = @{
+ packageName="$packageName";
+ result=$result;
+ path=@("$path", "$ciFilePath");
+ packageFolder="$projectFolder";
+ artifacts=$artifacts;
+ apiViewArtifact=$apiViewArtifact;
+ language=".Net";
+ changelog=$changelog
+ }
+
+ if ($installInstructions -ne $null) {
+ $packageDetails['installInstructions'] = $installInstructions
+ }
+ $generatedSDKPackages.Add($packageDetails)
}
function UpdateExistingSDKByInputFiles()
{
@@ -930,4 +937,4 @@ function GetSDKProjectFolder()
}
$projectFolder = (Join-Path $sdkRepoRoot $service $packageDir)
return $projectFolder
-}
\ No newline at end of file
+}
diff --git a/eng/service.proj b/eng/service.proj
index 4fa28ff89678b..bc473731f3f12 100644
--- a/eng/service.proj
+++ b/eng/service.proj
@@ -72,11 +72,6 @@
-
-
-
-
-
customParameters = null, System.Collections.Generic.IEnumerable platformParameters = null, Azure.ResourceManager.AgFoodPlatform.Models.UnitSystemsInfo unitsSupported = null, System.Collections.Generic.IEnumerable apiInputParameters = null) { throw null; }
- public static Azure.ResourceManager.AgFoodPlatform.ExtensionData ExtensionData(Azure.Core.ResourceIdentifier id = null, string name = null, Azure.Core.ResourceType resourceType = default(Azure.Core.ResourceType), Azure.ResourceManager.Models.SystemData systemData = null, Azure.ETag? eTag = default(Azure.ETag?), string extensionId = null, string extensionCategory = null, string installedExtensionVersion = null, string extensionAuthLink = null, string extensionApiDocsLink = null) { throw null; }
+ public static Azure.ResourceManager.AgFoodPlatform.ExtensionData ExtensionData(Azure.Core.ResourceIdentifier id = null, string name = null, Azure.Core.ResourceType resourceType = default(Azure.Core.ResourceType), Azure.ResourceManager.Models.SystemData systemData = null, Azure.ETag? etag = default(Azure.ETag?), string extensionId = null, string extensionCategory = null, string installedExtensionVersion = null, string extensionAuthLink = null, string extensionApiDocsLink = null) { throw null; }
public static Azure.ResourceManager.AgFoodPlatform.FarmBeatData FarmBeatData(Azure.Core.ResourceIdentifier id = null, string name = null, Azure.Core.ResourceType resourceType = default(Azure.Core.ResourceType), Azure.ResourceManager.Models.SystemData systemData = null, System.Collections.Generic.IDictionary tags = null, Azure.Core.AzureLocation location = default(Azure.Core.AzureLocation), Azure.ResourceManager.Models.ManagedServiceIdentity identity = null, System.Uri instanceUri = null, Azure.ResourceManager.AgFoodPlatform.Models.ProvisioningState? provisioningState = default(Azure.ResourceManager.AgFoodPlatform.Models.ProvisioningState?), Azure.ResourceManager.AgFoodPlatform.Models.SensorIntegration sensorIntegration = null, Azure.ResourceManager.AgFoodPlatform.Models.PublicNetworkAccess? publicNetworkAccess = default(Azure.ResourceManager.AgFoodPlatform.Models.PublicNetworkAccess?), Azure.ResourceManager.AgFoodPlatform.AgFoodPlatformPrivateEndpointConnectionData privateEndpointConnections = null) { throw null; }
public static Azure.ResourceManager.AgFoodPlatform.FarmBeatsExtensionData FarmBeatsExtensionData(Azure.Core.ResourceIdentifier id = null, string name = null, Azure.Core.ResourceType resourceType = default(Azure.Core.ResourceType), Azure.ResourceManager.Models.SystemData systemData = null, string targetResourceType = null, string farmBeatsExtensionId = null, string farmBeatsExtensionName = null, string farmBeatsExtensionVersion = null, string publisherId = null, string description = null, string extensionCategory = null, string extensionAuthLink = null, string extensionApiDocsLink = null, System.Collections.Generic.IEnumerable detailedInformation = null) { throw null; }
public static Azure.ResourceManager.AgFoodPlatform.Models.SensorIntegration SensorIntegration(string enabled = null, Azure.ResourceManager.AgFoodPlatform.Models.ProvisioningState? provisioningState = default(Azure.ResourceManager.AgFoodPlatform.Models.ProvisioningState?), Azure.ResponseError provisioningInfoError = null) { throw null; }
diff --git a/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ArmAgFoodPlatformModelFactory.cs b/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ArmAgFoodPlatformModelFactory.cs
index 35dfc54e03651..1859d03e19bc7 100644
--- a/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ArmAgFoodPlatformModelFactory.cs
+++ b/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ArmAgFoodPlatformModelFactory.cs
@@ -21,21 +21,21 @@ public static partial class ArmAgFoodPlatformModelFactory
/// The name.
/// The resourceType.
/// The systemData.
- /// The ETag value to implement optimistic concurrency.
+ /// The ETag value to implement optimistic concurrency.
/// Extension Id.
/// Extension category. e.g. weather/sensor/satellite.
/// Installed extension version.
/// Extension auth link.
/// Extension api docs link.
/// A new instance for mocking.
- public static ExtensionData ExtensionData(ResourceIdentifier id = null, string name = null, ResourceType resourceType = default, SystemData systemData = null, ETag? eTag = null, string extensionId = null, string extensionCategory = null, string installedExtensionVersion = null, string extensionAuthLink = null, string extensionApiDocsLink = null)
+ public static ExtensionData ExtensionData(ResourceIdentifier id = null, string name = null, ResourceType resourceType = default, SystemData systemData = null, ETag? etag = null, string extensionId = null, string extensionCategory = null, string installedExtensionVersion = null, string extensionAuthLink = null, string extensionApiDocsLink = null)
{
return new ExtensionData(
id,
name,
resourceType,
systemData,
- eTag,
+ etag,
extensionId,
extensionCategory,
installedExtensionVersion,
diff --git a/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.Serialization.cs b/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.Serialization.cs
index 57b7401e11204..6006b6fe2520f 100644
--- a/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.Serialization.cs
+++ b/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.Serialization.cs
@@ -118,7 +118,7 @@ internal static ExtensionData DeserializeExtensionData(JsonElement element, Mode
{
return null;
}
- ETag? eTag = default;
+ ETag? etag = default;
ResourceIdentifier id = default;
string name = default;
ResourceType type = default;
@@ -138,7 +138,7 @@ internal static ExtensionData DeserializeExtensionData(JsonElement element, Mode
{
continue;
}
- eTag = new ETag(property.Value.GetString());
+ etag = new ETag(property.Value.GetString());
continue;
}
if (property.NameEquals("id"u8))
@@ -213,7 +213,7 @@ internal static ExtensionData DeserializeExtensionData(JsonElement element, Mode
name,
type,
systemData,
- eTag,
+ etag,
extensionId,
extensionCategory,
installedExtensionVersion,
diff --git a/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.cs b/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.cs
index 967ce7ea6a4f9..b5ec812aa4b84 100644
--- a/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.cs
+++ b/sdk/agrifood/Azure.ResourceManager.AgFoodPlatform/src/Generated/ExtensionData.cs
@@ -60,16 +60,16 @@ public ExtensionData()
/// The name.
/// The resourceType.
/// The systemData.
- /// The ETag value to implement optimistic concurrency.
+ /// The ETag value to implement optimistic concurrency.
/// Extension Id.
/// Extension category. e.g. weather/sensor/satellite.
/// Installed extension version.
/// Extension auth link.
/// Extension api docs link.
/// Keeps track of any properties unknown to the library.
- internal ExtensionData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, ETag? eTag, string extensionId, string extensionCategory, string installedExtensionVersion, string extensionAuthLink, string extensionApiDocsLink, IDictionary serializedAdditionalRawData) : base(id, name, resourceType, systemData)
+ internal ExtensionData(ResourceIdentifier id, string name, ResourceType resourceType, SystemData systemData, ETag? etag, string extensionId, string extensionCategory, string installedExtensionVersion, string extensionAuthLink, string extensionApiDocsLink, IDictionary serializedAdditionalRawData) : base(id, name, resourceType, systemData)
{
- ETag = eTag;
+ ETag = etag;
ExtensionId = extensionId;
ExtensionCategory = extensionCategory;
InstalledExtensionVersion = installedExtensionVersion;
diff --git a/sdk/apimanagement/Azure.ResourceManager.ApiManagement/CHANGELOG.md b/sdk/apimanagement/Azure.ResourceManager.ApiManagement/CHANGELOG.md
index 2b79d09358350..1190812165594 100644
--- a/sdk/apimanagement/Azure.ResourceManager.ApiManagement/CHANGELOG.md
+++ b/sdk/apimanagement/Azure.ResourceManager.ApiManagement/CHANGELOG.md
@@ -1,6 +1,6 @@
# Release History
-## 1.2.0-beta.2 (Unreleased)
+## 1.3.0-beta.1 (Unreleased)
### Features Added
@@ -10,11 +10,27 @@
### Other Changes
+## 1.2.0 (2024-07-05)
+
+### Features Added
+
+- Upgraded api-version tag from 'package-2021-08' to 'package-2022-08'. Tag detail available at https://github.com/Azure/azure-rest-api-specs/blob/2d973fccf9f28681a481e9760fa12b2334216e21/specification/apimanagement/resource-manager/readme.md.
+- Added `ArmOperation.Rehydrate` and `ArmOperation.Rehydrate` static methods to rehydrate a long-running operation.
+
+### Bugs Fixed
+
+- fix bugs caused by applying to the lastest 'require url' for opeartion_Id_:ContentType_CreateOrUpdate and ContentItem_CreateOrUpdate in apimcontenttypes.json
+
+### Other Changes
+
+- Upgraded Azure.Core from 1.36.0 to 1.40.0
+- Upgraded Azure.ResourceManager from 1.9.0 to 1.12.0
+
## 1.2.0-beta.1 (2024-04-22)
### Features Added
-- Enable the new model serialization by using the System.ClientModel, refer this [document](https://aka.ms/azsdk/net/mrw) for more details.
+- Enabled the new model serialization by using the System.ClientModel, refer this [document](https://aka.ms/azsdk/net/mrw) for more details.
### Bugs Fixed
@@ -25,11 +41,11 @@
### Features Added
-- Enable mocking for extension methods, refer this [document](https://aka.ms/azsdk/net/mocking) for more details.
+- Enabled mocking for extension methods, refer this [document](https://aka.ms/azsdk/net/mocking) for more details.
### Bugs Fixed
-- Add property `PrivateUriString` instead of `PrivateUri` in ApiRevisionContract to fix Uri deserialization issue.
+- Added property `PrivateUriString` instead of `PrivateUri` in ApiRevisionContract to fix Uri deserialization issue.
### Other Changes
@@ -39,7 +55,7 @@
### Features Added
-- Enable the model factory feature for model mocking, more information can be found [here](https://azure.github.io/azure-sdk/dotnet_introduction.html#dotnet-mocking-factory-builder).
+- Enabled the model factory feature for model mocking, more information can be found [here](https://azure.github.io/azure-sdk/dotnet_introduction.html#dotnet-mocking-factory-builder).
### Other Changes
@@ -118,4 +134,3 @@ This package follows the [new Azure SDK guidelines](https://azure.github.io/azur
This package is a Public Preview version, so expect incompatible changes in subsequent releases as we improve the product. To provide feedback, submit an issue in our [Azure SDK for .NET GitHub repo](https://github.com/Azure/azure-sdk-for-net/issues).
> NOTE: For more information about unified authentication, please refer to [Microsoft Azure Identity documentation for .NET](https://docs.microsoft.com//dotnet/api/overview/azure/identity-readme?view=azure-dotnet).
-
diff --git a/sdk/apimanagement/Azure.ResourceManager.ApiManagement/api/Azure.ResourceManager.ApiManagement.netstandard2.0.cs b/sdk/apimanagement/Azure.ResourceManager.ApiManagement/api/Azure.ResourceManager.ApiManagement.netstandard2.0.cs
index 50169a25d9ce9..295a457cc1a05 100644
--- a/sdk/apimanagement/Azure.ResourceManager.ApiManagement/api/Azure.ResourceManager.ApiManagement.netstandard2.0.cs
+++ b/sdk/apimanagement/Azure.ResourceManager.ApiManagement/api/Azure.ResourceManager.ApiManagement.netstandard2.0.cs
@@ -269,6 +269,8 @@ public ApiManagementAuthorizationServerData() { }
public string ResourceOwnerUsername { get { throw null; } set { } }
public System.Collections.Generic.IList TokenBodyParameters { get { throw null; } }
public string TokenEndpoint { get { throw null; } set { } }
+ public bool? UseInApiDocumentation { get { throw null; } set { } }
+ public bool? UseInTestConsole { get { throw null; } set { } }
Azure.ResourceManager.ApiManagement.ApiManagementAuthorizationServerData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
Azure.ResourceManager.ApiManagement.ApiManagementAuthorizationServerData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
@@ -657,6 +659,16 @@ public static partial class ApiManagementExtensions
public static Azure.ResourceManager.ApiManagement.ApiTagDescriptionResource GetApiTagDescriptionResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
public static Azure.ResourceManager.ApiManagement.ApiTagResource GetApiTagResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
public static Azure.ResourceManager.ApiManagement.ApiVersionSetResource GetApiVersionSetResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractResource GetAuthorizationAccessPolicyContractResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.AuthorizationContractResource GetAuthorizationContractResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.AuthorizationProviderContractResource GetAuthorizationProviderContractResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.DocumentationContractResource GetDocumentationContractResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.PolicyFragmentContractResource GetPolicyFragmentContractResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.PortalConfigContractResource GetPortalConfigContractResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.ResolverContractResource GetResolverContractResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.ServiceApiResolverPolicyResource GetServiceApiResolverPolicyResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.ServiceApiWikiResource GetServiceApiWikiResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
+ public static Azure.ResourceManager.ApiManagement.ServiceProductWikiResource GetServiceProductWikiResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
public static Azure.ResourceManager.ApiManagement.TenantAccessInfoResource GetTenantAccessInfoResource(this Azure.ResourceManager.ArmClient client, Azure.Core.ResourceIdentifier id) { throw null; }
}
public partial class ApiManagementGatewayCertificateAuthorityCollection : Azure.ResourceManager.ArmCollection, System.Collections.Generic.IAsyncEnumerable, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable
@@ -963,6 +975,7 @@ public ApiManagementIdentityProviderData() { }
public System.Collections.Generic.IList AllowedTenants { get { throw null; } }
public string Authority { get { throw null; } set { } }
public string ClientId { get { throw null; } set { } }
+ public string ClientLibrary { get { throw null; } set { } }
public string ClientSecret { get { throw null; } set { } }
public Azure.ResourceManager.ApiManagement.Models.IdentityProviderType? IdentityProviderType { get { throw null; } set { } }
public string PasswordResetPolicyName { get { throw null; } set { } }
@@ -1224,6 +1237,8 @@ public ApiManagementOpenIdConnectProviderData() { }
public string Description { get { throw null; } set { } }
public string DisplayName { get { throw null; } set { } }
public string MetadataEndpoint { get { throw null; } set { } }
+ public bool? UseInApiDocumentation { get { throw null; } set { } }
+ public bool? UseInTestConsole { get { throw null; } set { } }
Azure.ResourceManager.ApiManagement.ApiManagementOpenIdConnectProviderData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
Azure.ResourceManager.ApiManagement.ApiManagementOpenIdConnectProviderData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
@@ -1639,6 +1654,7 @@ protected ApiManagementProductResource() { }
public virtual Azure.AsyncPageable GetProductApisAsync(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Pageable GetProductGroups(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.AsyncPageable GetProductGroupsAsync(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.ServiceProductWikiResource GetServiceProductWiki() { throw null; }
Azure.ResourceManager.ApiManagement.ApiManagementProductData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
Azure.ResourceManager.ApiManagement.ApiManagementProductData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
@@ -1719,7 +1735,9 @@ public ApiManagementServiceData(Azure.Core.AzureLocation location, Azure.Resourc
public Azure.ResourceManager.Models.ManagedServiceIdentity Identity { get { throw null; } set { } }
public System.Uri ManagementApiUri { get { throw null; } }
public string MinApiVersion { get { throw null; } set { } }
+ public Azure.ResourceManager.ApiManagement.Models.ApiManagementNatGatewayState? NatGatewayState { get { throw null; } set { } }
public string NotificationSenderEmail { get { throw null; } set { } }
+ public System.Collections.Generic.IReadOnlyList OutboundPublicIPAddresses { get { throw null; } }
public Azure.ResourceManager.ApiManagement.Models.PlatformVersion? PlatformVersion { get { throw null; } }
public System.Uri PortalUri { get { throw null; } }
public System.Collections.Generic.IList PrivateEndpointConnections { get { throw null; } }
@@ -1853,6 +1871,9 @@ protected ApiManagementServiceResource() { }
public virtual System.Threading.Tasks.Task> GetApiVersionSetAsync(string versionSetId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.ResourceManager.ApiManagement.ApiVersionSetCollection GetApiVersionSets() { throw null; }
public virtual System.Threading.Tasks.Task> GetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response GetAuthorizationProviderContract(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAuthorizationProviderContractAsync(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.AuthorizationProviderContractCollection GetAuthorizationProviderContracts() { throw null; }
public virtual Azure.Pageable GetAvailableApiManagementServiceSkus(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.AsyncPageable GetAvailableApiManagementServiceSkusAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Response GetContentItem(string contentTypeId, string contentItemId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
@@ -1865,6 +1886,9 @@ protected ApiManagementServiceResource() { }
public virtual System.Threading.Tasks.Task> GetContentTypeAsync(string contentTypeId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Pageable GetContentTypes(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.AsyncPageable GetContentTypesAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response GetDocumentationContract(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetDocumentationContractAsync(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.DocumentationContractCollection GetDocumentationContracts() { throw null; }
public virtual Azure.Response GetNetworkStatusByLocation(Azure.Core.AzureLocation locationName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual System.Threading.Tasks.Task> GetNetworkStatusByLocationAsync(Azure.Core.AzureLocation locationName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Pageable GetNetworkStatuses(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
@@ -1873,6 +1897,12 @@ protected ApiManagementServiceResource() { }
public virtual Azure.AsyncPageable GetOutboundNetworkDependenciesEndpointsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Pageable GetPolicyDescriptions(Azure.ResourceManager.ApiManagement.Models.PolicyScopeContract? scope = default(Azure.ResourceManager.ApiManagement.Models.PolicyScopeContract?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.AsyncPageable GetPolicyDescriptionsAsync(Azure.ResourceManager.ApiManagement.Models.PolicyScopeContract? scope = default(Azure.ResourceManager.ApiManagement.Models.PolicyScopeContract?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response GetPolicyFragmentContract(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetPolicyFragmentContractAsync(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.PolicyFragmentContractCollection GetPolicyFragmentContracts() { throw null; }
+ public virtual Azure.Response GetPortalConfigContract(string portalConfigId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetPortalConfigContractAsync(string portalConfigId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.PortalConfigContractCollection GetPortalConfigContracts() { throw null; }
public virtual Azure.Pageable GetPortalSettings(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.AsyncPageable GetPortalSettingsAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Pageable GetProductsByTags(string filter = null, int? top = default(int?), int? skip = default(int?), bool? includeNotTaggedProducts = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
@@ -1908,6 +1938,8 @@ protected ApiManagementServiceResource() { }
public virtual Azure.ResourceManager.ApiManagement.TenantAccessInfoCollection GetTenantAccessInfos() { throw null; }
public virtual Azure.Response GetTenantConfigurationSyncState(Azure.ResourceManager.ApiManagement.Models.ConfigurationName configurationName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual System.Threading.Tasks.Task> GetTenantConfigurationSyncStateAsync(Azure.ResourceManager.ApiManagement.Models.ConfigurationName configurationName, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation MigrateToStv2(Azure.WaitUntil waitUntil, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> MigrateToStv2Async(Azure.WaitUntil waitUntil, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.ResourceManager.ArmOperation PerformConnectivityCheckAsync(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.Models.ConnectivityCheckContent content, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual System.Threading.Tasks.Task> PerformConnectivityCheckAsyncAsync(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.Models.ConnectivityCheckContent content, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Response RemoveTag(string key, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
@@ -2404,6 +2436,10 @@ protected ApiResource() { }
public virtual System.Threading.Tasks.Task> GetEntityTagAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.Pageable GetOperationsByTags(string filter = null, int? top = default(int?), int? skip = default(int?), bool? includeNotTaggedOperations = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual Azure.AsyncPageable GetOperationsByTagsAsync(string filter = null, int? top = default(int?), int? skip = default(int?), bool? includeNotTaggedOperations = default(bool?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response GetResolverContract(string resolverId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetResolverContractAsync(string resolverId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.ResolverContractCollection GetResolverContracts() { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.ServiceApiWikiResource GetServiceApiWiki() { throw null; }
Azure.ResourceManager.ApiManagement.ApiData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
Azure.ResourceManager.ApiManagement.ApiData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
@@ -2605,6 +2641,161 @@ protected ApiVersionSetResource() { }
public virtual Azure.Response Update(Azure.ETag ifMatch, Azure.ResourceManager.ApiManagement.Models.ApiVersionSetPatch patch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
public virtual System.Threading.Tasks.Task> UpdateAsync(Azure.ETag ifMatch, Azure.ResourceManager.ApiManagement.Models.ApiVersionSetPatch patch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
}
+ public partial class AuthorizationAccessPolicyContractCollection : Azure.ResourceManager.ArmCollection, System.Collections.Generic.IAsyncEnumerable, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable
+ {
+ protected AuthorizationAccessPolicyContractCollection() { }
+ public virtual Azure.ResourceManager.ArmOperation CreateOrUpdate(Azure.WaitUntil waitUntil, string authorizationAccessPolicyId, Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> CreateOrUpdateAsync(Azure.WaitUntil waitUntil, string authorizationAccessPolicyId, Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Exists(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> ExistsAsync(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Pageable GetAll(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.AsyncPageable GetAllAsync(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.NullableResponse GetIfExists(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetIfExistsAsync(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ System.Collections.Generic.IAsyncEnumerator System.Collections.Generic.IAsyncEnumerable.GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken) { throw null; }
+ System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() { throw null; }
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; }
+ }
+ public partial class AuthorizationAccessPolicyContractData : Azure.ResourceManager.Models.ResourceData, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public AuthorizationAccessPolicyContractData() { }
+ public string ObjectId { get { throw null; } set { } }
+ public System.Guid? TenantId { get { throw null; } set { } }
+ Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ }
+ public partial class AuthorizationAccessPolicyContractResource : Azure.ResourceManager.ArmResource, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public static readonly Azure.Core.ResourceType ResourceType;
+ protected AuthorizationAccessPolicyContractResource() { }
+ public virtual Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData Data { get { throw null; } }
+ public virtual bool HasData { get { throw null; } }
+ public static Azure.Core.ResourceIdentifier CreateResourceIdentifier(string subscriptionId, string resourceGroupName, string serviceName, string authorizationProviderId, string authorizationId, string authorizationAccessPolicyId) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Delete(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task DeleteAsync(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Update(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> UpdateAsync(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ }
+ public partial class AuthorizationContractCollection : Azure.ResourceManager.ArmCollection, System.Collections.Generic.IAsyncEnumerable, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable
+ {
+ protected AuthorizationContractCollection() { }
+ public virtual Azure.ResourceManager.ArmOperation CreateOrUpdate(Azure.WaitUntil waitUntil, string authorizationId, Azure.ResourceManager.ApiManagement.AuthorizationContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> CreateOrUpdateAsync(Azure.WaitUntil waitUntil, string authorizationId, Azure.ResourceManager.ApiManagement.AuthorizationContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Exists(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> ExistsAsync(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Pageable GetAll(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.AsyncPageable GetAllAsync(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.NullableResponse GetIfExists(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetIfExistsAsync(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ System.Collections.Generic.IAsyncEnumerator System.Collections.Generic.IAsyncEnumerable.GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken) { throw null; }
+ System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() { throw null; }
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; }
+ }
+ public partial class AuthorizationContractData : Azure.ResourceManager.Models.ResourceData, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public AuthorizationContractData() { }
+ public Azure.ResourceManager.ApiManagement.Models.ApiManagementAuthorizationType? AuthorizationType { get { throw null; } set { } }
+ public Azure.ResourceManager.ApiManagement.Models.ApiManagementAuthorizationError Error { get { throw null; } set { } }
+ public Azure.ResourceManager.ApiManagement.Models.OAuth2GrantType? OAuth2GrantType { get { throw null; } set { } }
+ public System.Collections.Generic.IDictionary Parameters { get { throw null; } }
+ public string Status { get { throw null; } set { } }
+ Azure.ResourceManager.ApiManagement.AuthorizationContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.AuthorizationContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ }
+ public partial class AuthorizationContractResource : Azure.ResourceManager.ArmResource, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public static readonly Azure.Core.ResourceType ResourceType;
+ protected AuthorizationContractResource() { }
+ public virtual Azure.ResourceManager.ApiManagement.AuthorizationContractData Data { get { throw null; } }
+ public virtual bool HasData { get { throw null; } }
+ public virtual Azure.Response ConfirmConsentCode(Azure.ResourceManager.ApiManagement.Models.AuthorizationConfirmConsentCodeContent content, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task ConfirmConsentCodeAsync(Azure.ResourceManager.ApiManagement.Models.AuthorizationConfirmConsentCodeContent content, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public static Azure.Core.ResourceIdentifier CreateResourceIdentifier(string subscriptionId, string resourceGroupName, string serviceName, string authorizationProviderId, string authorizationId) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Delete(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task DeleteAsync(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response GetAuthorizationAccessPolicyContract(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAuthorizationAccessPolicyContractAsync(string authorizationAccessPolicyId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.AuthorizationAccessPolicyContractCollection GetAuthorizationAccessPolicyContracts() { throw null; }
+ public virtual Azure.Response PostAuthorizationLoginLink(Azure.ResourceManager.ApiManagement.Models.AuthorizationLoginContent content, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> PostAuthorizationLoginLinkAsync(Azure.ResourceManager.ApiManagement.Models.AuthorizationLoginContent content, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ Azure.ResourceManager.ApiManagement.AuthorizationContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.AuthorizationContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Update(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.AuthorizationContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> UpdateAsync(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.AuthorizationContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ }
+ public partial class AuthorizationProviderContractCollection : Azure.ResourceManager.ArmCollection, System.Collections.Generic.IAsyncEnumerable, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable
+ {
+ protected AuthorizationProviderContractCollection() { }
+ public virtual Azure.ResourceManager.ArmOperation CreateOrUpdate(Azure.WaitUntil waitUntil, string authorizationProviderId, Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> CreateOrUpdateAsync(Azure.WaitUntil waitUntil, string authorizationProviderId, Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Exists(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> ExistsAsync(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Pageable GetAll(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.AsyncPageable GetAllAsync(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.NullableResponse GetIfExists(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetIfExistsAsync(string authorizationProviderId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ System.Collections.Generic.IAsyncEnumerator System.Collections.Generic.IAsyncEnumerable.GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken) { throw null; }
+ System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() { throw null; }
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; }
+ }
+ public partial class AuthorizationProviderContractData : Azure.ResourceManager.Models.ResourceData, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public AuthorizationProviderContractData() { }
+ public string DisplayName { get { throw null; } set { } }
+ public string IdentityProvider { get { throw null; } set { } }
+ public Azure.ResourceManager.ApiManagement.Models.AuthorizationProviderOAuth2Settings Oauth2 { get { throw null; } set { } }
+ Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ }
+ public partial class AuthorizationProviderContractResource : Azure.ResourceManager.ArmResource, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public static readonly Azure.Core.ResourceType ResourceType;
+ protected AuthorizationProviderContractResource() { }
+ public virtual Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData Data { get { throw null; } }
+ public virtual bool HasData { get { throw null; } }
+ public static Azure.Core.ResourceIdentifier CreateResourceIdentifier(string subscriptionId, string resourceGroupName, string serviceName, string authorizationProviderId) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Delete(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task DeleteAsync(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response GetAuthorizationContract(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAuthorizationContractAsync(string authorizationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.ResourceManager.ApiManagement.AuthorizationContractCollection GetAuthorizationContracts() { throw null; }
+ Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Update(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> UpdateAsync(Azure.WaitUntil waitUntil, Azure.ResourceManager.ApiManagement.AuthorizationProviderContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ }
public partial class DiagnosticContractData : Azure.ResourceManager.Models.ResourceData, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
{
public DiagnosticContractData() { }
@@ -2624,6 +2815,55 @@ public DiagnosticContractData() { }
string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
}
+ public partial class DocumentationContractCollection : Azure.ResourceManager.ArmCollection, System.Collections.Generic.IAsyncEnumerable, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable
+ {
+ protected DocumentationContractCollection() { }
+ public virtual Azure.ResourceManager.ArmOperation CreateOrUpdate(Azure.WaitUntil waitUntil, string documentationId, Azure.ResourceManager.ApiManagement.DocumentationContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> CreateOrUpdateAsync(Azure.WaitUntil waitUntil, string documentationId, Azure.ResourceManager.ApiManagement.DocumentationContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Exists(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> ExistsAsync(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Pageable GetAll(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.AsyncPageable GetAllAsync(string filter = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.NullableResponse GetIfExists(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetIfExistsAsync(string documentationId, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ System.Collections.Generic.IAsyncEnumerator System.Collections.Generic.IAsyncEnumerable.GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken) { throw null; }
+ System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() { throw null; }
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; }
+ }
+ public partial class DocumentationContractData : Azure.ResourceManager.Models.ResourceData, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public DocumentationContractData() { }
+ public string Content { get { throw null; } set { } }
+ public string Title { get { throw null; } set { } }
+ Azure.ResourceManager.ApiManagement.DocumentationContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.DocumentationContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ }
+ public partial class DocumentationContractResource : Azure.ResourceManager.ArmResource, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public static readonly Azure.Core.ResourceType ResourceType;
+ protected DocumentationContractResource() { }
+ public virtual Azure.ResourceManager.ApiManagement.DocumentationContractData Data { get { throw null; } }
+ public virtual bool HasData { get { throw null; } }
+ public static Azure.Core.ResourceIdentifier CreateResourceIdentifier(string subscriptionId, string resourceGroupName, string serviceName, string documentationId) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Delete(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task DeleteAsync(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response GetEntityTag(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetEntityTagAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ Azure.ResourceManager.ApiManagement.DocumentationContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.DocumentationContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ public virtual Azure.Response Update(Azure.ETag ifMatch, Azure.ResourceManager.ApiManagement.Models.DocumentationContractPatch patch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> UpdateAsync(Azure.ETag ifMatch, Azure.ResourceManager.ApiManagement.Models.DocumentationContractPatch patch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ }
public partial class IssueContractData : Azure.ResourceManager.Models.ResourceData, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
{
public IssueContractData() { }
@@ -2650,6 +2890,246 @@ public PolicyContractData() { }
string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
}
+ public partial class PolicyFragmentContractCollection : Azure.ResourceManager.ArmCollection, System.Collections.Generic.IAsyncEnumerable, System.Collections.Generic.IEnumerable, System.Collections.IEnumerable
+ {
+ protected PolicyFragmentContractCollection() { }
+ public virtual Azure.ResourceManager.ArmOperation CreateOrUpdate(Azure.WaitUntil waitUntil, string id, Azure.ResourceManager.ApiManagement.PolicyFragmentContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> CreateOrUpdateAsync(Azure.WaitUntil waitUntil, string id, Azure.ResourceManager.ApiManagement.PolicyFragmentContractData data, Azure.ETag? ifMatch = default(Azure.ETag?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Exists(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> ExistsAsync(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response Get(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Pageable GetAll(string filter = null, string orderBy = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.AsyncPageable GetAllAsync(string filter = null, string orderBy = null, int? top = default(int?), int? skip = default(int?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetAsync(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.NullableResponse GetIfExists(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task> GetIfExistsAsync(string id, Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? format = default(Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat?), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ System.Collections.Generic.IAsyncEnumerator System.Collections.Generic.IAsyncEnumerable.GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken) { throw null; }
+ System.Collections.Generic.IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator() { throw null; }
+ System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { throw null; }
+ }
+ public partial class PolicyFragmentContractData : Azure.ResourceManager.Models.ResourceData, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public PolicyFragmentContractData() { }
+ public string Description { get { throw null; } set { } }
+ public Azure.ResourceManager.ApiManagement.Models.PolicyFragmentContentFormat? Format { get { throw null; } set { } }
+ public string Value { get { throw null; } set { } }
+ Azure.ResourceManager.ApiManagement.PolicyFragmentContractData System.ClientModel.Primitives.IJsonModel.Create(ref System.Text.Json.Utf8JsonReader reader, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ void System.ClientModel.Primitives.IJsonModel.Write(System.Text.Json.Utf8JsonWriter writer, System.ClientModel.Primitives.ModelReaderWriterOptions options) { }
+ Azure.ResourceManager.ApiManagement.PolicyFragmentContractData System.ClientModel.Primitives.IPersistableModel.Create(System.BinaryData data, System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ string System.ClientModel.Primitives.IPersistableModel.GetFormatFromOptions(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ System.BinaryData System.ClientModel.Primitives.IPersistableModel.Write(System.ClientModel.Primitives.ModelReaderWriterOptions options) { throw null; }
+ }
+ public partial class PolicyFragmentContractResource : Azure.ResourceManager.ArmResource, System.ClientModel.Primitives.IJsonModel, System.ClientModel.Primitives.IPersistableModel
+ {
+ public static readonly Azure.Core.ResourceType ResourceType;
+ protected PolicyFragmentContractResource() { }
+ public virtual Azure.ResourceManager.ApiManagement.PolicyFragmentContractData Data { get { throw null; } }
+ public virtual bool HasData { get { throw null; } }
+ public static Azure.Core.ResourceIdentifier CreateResourceIdentifier(string subscriptionId, string resourceGroupName, string serviceName, string id) { throw null; }
+ public virtual Azure.ResourceManager.ArmOperation Delete(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual System.Threading.Tasks.Task DeleteAsync(Azure.WaitUntil waitUntil, Azure.ETag ifMatch, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { throw null; }
+ public virtual Azure.Response