Skip to content

Commit 4d2023f

Browse files
Merge branch 'azure-sdk:main' into main
2 parents e66b6fe + abc6462 commit 4d2023f

File tree

88 files changed

+1049
-1723
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+1049
-1723
lines changed

eng/Packages.Data.props

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@
244244
All should have PrivateAssets="All" set so they don't become package dependencies
245245
-->
246246
<ItemGroup>
247-
<PackageReference Update="Microsoft.Azure.AutoRest.CSharp" Version="3.0.0-beta.20241226.1" PrivateAssets="All" />
247+
<PackageReference Update="Microsoft.Azure.AutoRest.CSharp" Version="3.0.0-beta.20250104.1" PrivateAssets="All" />
248248
<PackageReference Update="Azure.ClientSdk.Analyzers" Version="0.1.1-dev.20240813.2" PrivateAssets="All" />
249249
<PackageReference Update="coverlet.collector" Version="3.2.0" PrivateAssets="All" />
250250
<PackageReference Update="Microsoft.CodeAnalysis.NetAnalyzers" Version="8.0.0" PrivateAssets="All" />
@@ -259,7 +259,7 @@
259259
</ItemGroup>
260260

261261
<ItemGroup Condition="'$(IsGeneratorLibrary)' == 'true'">
262-
<PackageReference Update="Microsoft.Generator.CSharp.ClientModel" Version="1.0.0-alpha.20241223.1" />
262+
<PackageReference Update="Microsoft.Generator.CSharp.ClientModel" Version="1.0.0-alpha.20250106.3" />
263263
</ItemGroup>
264264

265265
<!--
@@ -414,7 +414,7 @@
414414
</ItemGroup>
415415

416416
<PropertyGroup>
417-
<TestProxyVersion>1.0.0-dev.20241209.1</TestProxyVersion>
417+
<TestProxyVersion>1.0.0-dev.20241213.1</TestProxyVersion>
418418
</PropertyGroup>
419419

420420
</Project>

eng/common/pipelines/templates/jobs/prepare-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ jobs:
130130
Write-Host "##vso[task.setvariable variable=InternalVariableGroups]$internalVariableGroups"
131131
Write-Host "##vso[task.setvariable variable=TestVariableGroups]$testVariableGroups"
132132
Write-Host "##vso[task.setvariable variable=TestServiceConnections]$testServiceConnections"
133-
Write-Host "##vso[task.setvariable variable=InternalServiceConnections]$internalServviceConnections"
133+
Write-Host "##vso[task.setvariable variable=InternalServiceConnections]$internalServiceConnections"
134134
Write-host "##vso[task.setvariable variable=GeneratePublicCIPipeline]$generatePublicCIPipeline"
135135
Write-Host "##vso[task.setvariable variable=GenerateUnifiedWeekly]$generateUnifiedWeekly"
136136
displayName: Setup pipeline generation variables
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.0-dev.20241209.1
1+
1.0.0-dev.20241213.1

eng/containers/ci.yml

Lines changed: 50 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,55 @@ trigger:
88
include:
99
- eng/containers/
1010

11-
pool:
12-
vmImage: 'ubuntu-20.04'
11+
extends:
12+
template: /eng/pipelines/templates/stages/1es-redirect.yml
13+
parameters:
14+
stages:
15+
- stage:
16+
displayName: Docker Build and Publish
17+
variables:
18+
- template: /eng/pipelines/templates/variables/globals.yml
19+
- template: /eng/pipelines/templates/variables/image.yml
20+
- name: configPath
21+
value: ./eng/containers/UbuntuNetCoreKeyring
22+
- name: containerRegistry
23+
value: 'azsdkengsys'
24+
- name: imageRepository
25+
value: 'dotnet/ubuntu_netcore_keyring'
26+
- name: imageTag
27+
value: $(build.buildid)
1328

14-
variables:
15-
- template: /eng/pipelines/templates/variables/globals.yml
16-
- name: dockerfile
17-
value: ./eng/containers/UbuntuNetCoreKeyring/Dockerfile
18-
- name: containerRegistry
19-
value: 'azsdkengsys'
20-
- name: imageRepository
21-
value: 'dotnet/ubuntu_netcore_keyring'
22-
- name: imageTag
23-
value: $(build.buildid)
29+
jobs:
30+
- job:
31+
displayName: Docker Build and Publish
32+
pool:
33+
name: $(LINUXPOOL)
34+
image: $(LINUXVMIMAGE)
35+
os: linux
2436

25-
steps:
26-
- task: Docker@2
27-
displayName: Build Docker Image
28-
inputs:
29-
command: build
30-
Dockerfile: $(dockerfile)
31-
tags: $(imageTag)
32-
arguments: '-t $(containerRegistry).azurecr.io/$(imageRepository):$(imageTag)'
33-
- task: Docker@2
34-
displayName: Push Docker Image
35-
inputs:
36-
containerRegistry: $(containerRegistry)
37-
repository: $(imageRepository)
38-
command: push
39-
tags: $(imageTag)
37+
templateContext:
38+
outputs:
39+
- output: containerImage
40+
image: image:tag
41+
remoteImage:
42+
- $(containerRegistry).azurecr.io/$(imageRepository):$(imageTag)
43+
44+
steps:
45+
- template: /eng/common/pipelines/templates/steps/sparse-checkout.yml
46+
47+
- task: AzureCLI@2
48+
displayName: Login to $(containerRegistry)
49+
inputs:
50+
azureSubscription: "Azure SDK Engineering System"
51+
scriptType: pscore
52+
scriptLocation: inlineScript
53+
inlineScript: |
54+
az acr login --name $(containerRegistry)
55+
56+
- task: 1ES.BuildContainerImage@1
57+
displayName: Build Docker Image
58+
inputs:
59+
path: $(configPath)
60+
image: image:tag
61+
enableNetwork: true
62+
useBuildKit: true

eng/emitter-package-lock.json

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

eng/emitter-package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"main": "dist/src/index.js",
33
"dependencies": {
4-
"@azure-tools/typespec-csharp": "0.2.0-beta.20241226.1"
4+
"@azure-tools/typespec-csharp": "0.2.0-beta.20250104.1"
55
},
66
"devDependencies": {
77
"@azure-tools/typespec-autorest": "0.49.0",
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using Microsoft.Generator.CSharp.ClientModel;
5+
using Microsoft.Generator.CSharp.ClientModel.Providers;
6+
using Microsoft.Generator.CSharp.Primitives;
7+
using Microsoft.Generator.CSharp.Providers;
8+
using System.IO;
9+
10+
namespace Azure.Generator
11+
{
12+
// only apply for MPG
13+
internal class AzureArmVisitor : ScmLibraryVisitor
14+
{
15+
/// <inheritdoc/>
16+
protected override TypeProvider? Visit(TypeProvider type)
17+
{
18+
if (type is ClientProvider)
19+
{
20+
type.Update(modifiers: TransfromPublicModifiersToInternal(type), relativeFilePath: TransformRelativeFilePathForClient(type));
21+
}
22+
// TODO: uncomment this once resources are generated
23+
//if (type is RestClientProvider)
24+
//{
25+
// type.Update(modifiers: TransfromModifiers(type), relativeFilePath: TransformRelativeFilePathForRestClient(type));
26+
//}
27+
return type;
28+
}
29+
30+
private static string TransformRelativeFilePathForClient(TypeProvider type)
31+
=> Path.Combine("src", "Generated", "RestOperations", $"{type.Name}RestOperations.cs");
32+
33+
private static string TransformRelativeFilePathForRestClient(TypeProvider type)
34+
=> Path.Combine("src", "Generated", "RestOperations", $"{type.Name}.RestClient.cs");
35+
36+
private static TypeSignatureModifiers TransfromPublicModifiersToInternal(TypeProvider type)
37+
{
38+
var modifiers = type.DeclarationModifiers;
39+
if (modifiers.HasFlag(TypeSignatureModifiers.Public))
40+
{
41+
modifiers &= ~TypeSignatureModifiers.Public;
42+
modifiers |= TypeSignatureModifiers.Internal;
43+
}
44+
45+
return modifiers;
46+
}
47+
}
48+
}

eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureClientPlugin.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ public override void Configure()
4949
AddMetadataReference(MetadataReference.CreateFromFile(typeof(Response).Assembly.Location));
5050
var sharedSourceDirectory = Path.Combine(Path.GetDirectoryName(typeof(AzureClientPlugin).Assembly.Location)!, "Shared", "Core");
5151
AddSharedSourceDirectory(sharedSourceDirectory);
52+
if (IsAzureArm.Value)
53+
{
54+
AddVisitor(new AzureArmVisitor());
55+
}
5256
}
5357

5458
/// <summary>

eng/packages/http-client-csharp/generator/Azure.Generator/src/AzureTypeFactory.cs

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT License.
33

4+
using Azure.Generator.InputTransformation;
45
using Azure.Generator.Primitives;
56
using Azure.Generator.Providers;
67
using Azure.Generator.Providers.Abstraction;
@@ -13,7 +14,6 @@
1314
using Microsoft.Generator.CSharp.Statements;
1415
using System;
1516
using System.ClientModel.Primitives;
16-
using System.Collections.Generic;
1717
using System.Text.Json;
1818

1919
namespace Azure.Generator
@@ -107,20 +107,7 @@ public override MethodBodyStatement SerializeJsonValue(Type valueType, ValueExpr
107107
}
108108

109109
/// <inheritdoc/>
110-
protected override ClientProvider CreateClientCore(InputClient inputClient) => base.CreateClientCore(TransformInputClient(inputClient));
111-
112-
private InputClient TransformInputClient(InputClient client)
113-
{
114-
var operationsToKeep = new List<InputOperation>();
115-
foreach (var operation in client.Operations)
116-
{
117-
// operations_list has been covered in Azure.ResourceManager already, we don't need to generate it in the client
118-
if (operation.CrossLanguageDefinitionId != "Azure.ResourceManager.Operations.list")
119-
{
120-
operationsToKeep.Add(operation);
121-
}
122-
}
123-
return new InputClient(client.Name, client.Summary, client.Doc, operationsToKeep, client.Parameters, client.Parent);
124-
}
110+
protected override ClientProvider CreateClientCore(InputClient inputClient)
111+
=> AzureClientPlugin.Instance.IsAzureArm.Value ? base.CreateClientCore(InputClientTransformer.TransformInputClient(inputClient)) : base.CreateClientCore(inputClient);
125112
}
126113
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using Microsoft.Generator.CSharp.Input;
5+
using System;
6+
using System.Collections.Generic;
7+
8+
namespace Azure.Generator.InputTransformation
9+
{
10+
internal static class InputClientTransformer
11+
{
12+
public static InputClient TransformInputClient(InputClient client)
13+
{
14+
var operationsToKeep = new List<InputOperation>();
15+
foreach (var operation in client.Operations)
16+
{
17+
// operations_list has been covered in Azure.ResourceManager already, we don't need to generate it in the client
18+
if (operation.CrossLanguageDefinitionId != "Azure.ResourceManager.Operations.list")
19+
{
20+
var transformedOperation = new InputOperation(operation.Name, operation.ResourceName, operation.Summary, operation.Doc, operation.Deprecated, operation.Accessibility, TransformInputOperationParameters(operation), operation.Responses, operation.HttpMethod, operation.RequestBodyMediaType, operation.Uri, operation.Path, operation.ExternalDocsUrl, operation.RequestMediaTypes, operation.BufferResponse, operation.LongRunning, operation.Paging, operation.GenerateProtocolMethod, operation.GenerateConvenienceMethod, operation.CrossLanguageDefinitionId);
21+
operationsToKeep.Add(transformedOperation);
22+
}
23+
}
24+
return new InputClient(client.Name, client.Summary, client.Doc, operationsToKeep, client.Parameters, client.Parent);
25+
}
26+
27+
private static IReadOnlyList<InputParameter> TransformInputOperationParameters(InputOperation operation)
28+
{
29+
var parameters = new List<InputParameter>();
30+
foreach (var parameter in operation.Parameters)
31+
{
32+
if (parameter.NameInRequest.Equals("subscriptionId", StringComparison.OrdinalIgnoreCase))
33+
{
34+
// Always set subscriptionId to method parameter
35+
parameters.Add(new InputParameter(parameter.Name, parameter.NameInRequest, parameter.Summary, parameter.Doc, parameter.Type, parameter.Location, parameter.DefaultValue, InputOperationParameterKind.Method, parameter.IsRequired, parameter.IsApiVersion, parameter.IsResourceParameter, parameter.IsContentType, parameter.IsEndpoint, parameter.SkipUrlEncoding, parameter.Explode, parameter.ArraySerializationDelimiter, parameter.HeaderCollectionPrefix));
36+
}
37+
else
38+
{
39+
parameters.Add(parameter);
40+
}
41+
}
42+
return parameters;
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)