Skip to content

Commit d727ddf

Browse files
committed
Merge remote-tracking branch 'origin/main' into rhurey/vl_specs
2 parents 3980a5c + 1a7db10 commit d727ddf

34 files changed

Lines changed: 347 additions & 218 deletions

File tree

.github/prompts/tspconfig_add_missing_languages.prompt.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Add a language that is missing (for instance, adding Go, Python, Javascript, or
88
- New emitter configurations should be added as a child of the "options:" section, after any other emitters and their options.
99
- Do NOT search the files in the repository for examples, as these can be out of date.
1010
- Determine which tspconfig.yaml template to use:
11-
- If the currently open tspconfig.yaml contains @azure-tools/typespec-azure-rulesets/resource-manager, then use this template: [tspconfig template](https://raw.githubusercontent.com/Azure/azure-rest-api-specs/refs/heads/main/specification/contosowidgetmanager/Contoso.Management/tspconfig.yaml)
12-
- If the currently open tspconfig.yaml contains @azure-tools/typespec-azure-rulesets/data-plane, then use this template: [tspconfig template](https://raw.githubusercontent.com/Azure/azure-rest-api-specs/refs/heads/main/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml)
11+
- If the currently open tspconfig.yaml contains @azure-tools/typespec-azure-rulesets/resource-manager, then use this [template](https://aka.ms/azsdk/tspconfig-sample-mpg)
12+
- If the currently open tspconfig.yaml contains @azure-tools/typespec-azure-rulesets/data-plane, then use this [template](https://aka.ms/azsdk/tspconfig-sample-dpg)
1313
- Using the appropriate template file as a guide, add in any emitter configurations, like @azure-tools/typespec-go, that do not have emitters configured in our tspconfig.yaml.
1414

eng/common/mcp/azure-sdk-mcp.ps1

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,34 @@ if (-not (Test-Path $toolInstallDirectory)) {
138138
}
139139
$exeName = Split-Path $tempExe -Leaf
140140
$exeDestination = Join-Path $toolInstallDirectory $exeName
141-
Copy-Item -Path $tempExe -Destination $exeDestination -Force
142141

143-
log "Package $package is installed at $exeDestination"
142+
# Try to copy the new version
143+
$updateSucceeded = $false
144+
try {
145+
Copy-Item -Path $tempExe -Destination $exeDestination -Force
146+
$updateSucceeded = $true
147+
}
148+
catch {
149+
if ($Run -and (Test-Path $exeDestination)) {
150+
# In MCP mode and the executable exists, warn and fall back to the existing installed version
151+
log -warn "Could not update '$exeDestination': $($_.Exception.Message)"
152+
log -warn "Falling back to the currently installed version."
153+
}
154+
else {
155+
# In update-only mode or the executable does not exist, exit with error
156+
log -err "Could not install or update '$exeDestination': $($_.Exception.Message)"
157+
exit 1
158+
}
159+
}
160+
161+
# Clean up temp directory
162+
if (Test-Path $tempInstallDirectory) {
163+
Remove-Item -Path $tempInstallDirectory -Recurse -Force -ErrorAction SilentlyContinue
164+
}
165+
166+
if ($updateSucceeded) {
167+
log "Executable $package is installed at $exeDestination"
168+
}
144169
if (!$UpdatePathInProfile) {
145170
log -warn "To add the tool to PATH for new shell sessions, re-run with -UpdatePathInProfile to modify the shell profile file."
146171
}

eng/pipelines/spec-gen-sdk-batch.yml

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,21 @@ parameters:
1313
default: 'sample-typespecs'
1414
displayName: 'Batch Specs to Run'
1515

16-
extends:
17-
template: /eng/pipelines/templates/stages/archetype-spec-gen-sdk.yml
18-
parameters:
19-
SpecRepoUrl: 'https://github.com/$(Build.Repository.Name)'
20-
SdkRepoUrl: $(SdkRepoUrl)
21-
SpecBatchTypes: ${{ parameters.SpecBatchTypes }}
16+
trigger: none
17+
pr: none
18+
19+
# Determine batch types to run: for scheduled runs use both mgmt and dataplane, otherwise use parameter
20+
variables:
21+
- name: batchTypes
22+
${{ if eq(variables['Build.Reason'], 'Schedule') }}:
23+
value: 'all-mgmtplane-typespecs,all-dataplane-typespecs'
24+
${{ else }}:
25+
value: ${{ parameters.SpecBatchTypes }}
26+
27+
stages:
28+
- ${{ each batchType in split(variables.batchTypes, ',') }}:
29+
- template: /eng/pipelines/templates/stages/archetype-spec-gen-sdk.yml
30+
parameters:
31+
SpecRepoUrl: 'https://github.com/$(Build.Repository.Name)'
32+
SdkRepoUrl: $(SdkRepoUrl)
33+
SpecBatchTypes: ${{ batchType }}

eng/tools/spec-gen-sdk-runner/src/commands.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ export async function generateSdkForBatchSpecs(batchType: string): Promise<numbe
241241
let specConfigPath = "";
242242
let stagedArtifactsFolder = "";
243243
let serviceFolderPath = "";
244+
const failedSpecs: string[] = [];
244245

245246
// Generate SDKs for each spec
246247
for (const specConfigs of specConfigsArray) {
@@ -300,6 +301,10 @@ export async function generateSdkForBatchSpecs(batchType: string): Promise<numbe
300301
} else {
301302
failedContent += `${specConfigPath},`;
302303
failedCount++;
304+
// Extract relative path from 'specification/' for telemetry
305+
const specIndex = specConfigPath.indexOf("specification/");
306+
const relativePath = specIndex >= 0 ? specConfigPath.substring(specIndex) : specConfigPath;
307+
failedSpecs.push(relativePath);
303308
}
304309
// Check for duplicated SDK configurations,
305310
// the execution result can be "succeeded" or "warning"
@@ -341,6 +346,32 @@ export async function generateSdkForBatchSpecs(batchType: string): Promise<numbe
341346
markdownContent += succeededCount ? `## Total Successful Specs\n ${succeededCount}\n` : "";
342347
markdownContent += `## Total Specs Count\n ${specConfigsArray.length}\n\n`;
343348

349+
// Emit structured telemetry for Kusto ingestion (only for mgmtplane/dataplane batch types)
350+
if (batchType === "all-mgmtplane-typespecs" || batchType === "all-dataplane-typespecs") {
351+
const specType = batchType === "all-mgmtplane-typespecs" ? "management-plane" : "data-plane";
352+
const telemetry = {
353+
eventType: "SdkBatchGenerationSummary",
354+
timestamp: new Date().toISOString(),
355+
batchType: batchType,
356+
specType: specType,
357+
sdkRepoName: commandInput.sdkRepoName,
358+
language: commandInput.sdkRepoName.replace("azure-sdk-for-", ""),
359+
totalSpecs: succeededCount + failedCount,
360+
succeededCount: succeededCount,
361+
failedCount: failedCount,
362+
notEnabledCount: notEnabledCount,
363+
duplicatedConfigCount: duplicatedConfigCount,
364+
successRate:
365+
succeededCount + failedCount > 0
366+
? Math.round((succeededCount / (succeededCount + failedCount)) * 100)
367+
: 0,
368+
buildId: process.env.BUILD_BUILDID ?? "",
369+
pipelineUrl: `${process.env.SYSTEM_COLLECTIONURI ?? ""}${process.env.SYSTEM_TEAMPROJECT ?? ""}/_build/results?buildId=${process.env.BUILD_BUILDID ?? ""}`,
370+
failedSpecs: failedSpecs,
371+
};
372+
logMessage(`##[SdkBatchGenerationSummary]${JSON.stringify(telemetry)}`);
373+
}
374+
344375
// Write the markdown content to a file
345376
const markdownFilePath = path.join(commandInput.workingFolder, "out/logs/generation-summary.md");
346377
try {

specification/ai/cspell.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,22 +88,39 @@ overrides:
8888
- filename: '**/specification/ai/data-plane/OpenAI.v1/**/*.*'
8989
words:
9090
- bleu
91+
- cfile
92+
- ckpt
93+
- cntr
9194
- dall
9295
- davinci
9396
- evals
9497
- flac
98+
- ftckpt
99+
- ftevent
95100
- ftjob
96101
- gleu
97102
- granularities
98103
- ilike
99104
- includable
100105
- inpaint
101106
- inpainting
107+
- Issh
108+
- KGDCGL
102109
- logit
103110
- logprobs
111+
- mcpl
112+
- mpga
113+
- mpxmy
114+
- pcma
115+
- pcmu
104116
- rerank
117+
- sess
118+
- vsfb
105119
- wandb
106120
- webp
121+
- xhigh
122+
- Xxulc
123+
- Zdws
107124
- filename: '**/specification/ai/OpenAI.Assistants/vector_stores/files/models.tsp'
108125
words:
109126
- ocurred

specification/cdn/resource-manager/Microsoft.Cdn/EdgeActions/client.tsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ using Microsoft.Cdn;
2929
"csharp"
3030
);
3131

32-
@@clientName(EdgeActions, "EdgeActionsMgmtClient", "python");
32+
@@clientName(Microsoft.Cdn, "EdgeActionsMgmtClient", "python");

specification/compute/Common.Management/legacy.tsp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,13 @@ namespace Azure.ResourceManager.Legacy {
1717
#suppress "@azure-tools/typespec-azure-core/no-private-usage"
1818
@tag("Operations")
1919
@autoRoute
20-
@Azure.ResourceManager.Private.armUpdateProviderNamespace
2120
@doc("List the operations for the provider")
2221
@segment("operations")
2322
@get
2423
@list
2524
list(
2625
...ApiVersionParameter,
27-
28-
@path
29-
@segment("providers")
30-
@doc("The provider namespace (this parameter will not show up in operations).")
31-
provider: "Microsoft.ThisWillBeReplaced",
26+
...Azure.ResourceManager.Legacy.Provider,
3227
): ArmResponse<Azure.ResourceManager.Foundations.OperationListResult> | Microsoft.Compute.CloudError;
3328
}
3429

specification/confluent/Confluent.Management/main.tsp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,17 +61,12 @@ interface Operations {
6161
#suppress "@azure-tools/typespec-azure-resource-manager/arm-resource-operation" "FIXME: Update justification, follow aka.ms/tsp/conversion-fix for details"
6262
@tag("Operations")
6363
@autoRoute
64-
@Azure.ResourceManager.Private.armUpdateProviderNamespace
6564
@doc("List the operations for the provider")
6665
@segment("operations")
6766
@get
6867
@list
6968
list(
7069
...ApiVersionParameter,
71-
72-
@path
73-
@segment("providers")
74-
@doc("The provider namespace (this parameter will not show up in operations).")
75-
provider: "Microsoft.ThisWillBeReplaced",
70+
...Azure.ResourceManager.Legacy.Provider,
7671
): ArmResponse<OperationListResult> | ResourceProviderDefaultErrorResponse;
7772
}

specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/Registry/Registry.models.tsp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,13 @@ model RegistryNameCheckRequest {
227227
*/
228228
@maxLength(90)
229229
@minLength(1)
230+
@added(Versions.vLatestPreview)
230231
resourceGroupName?: string;
231232

232233
/**
233234
* The auto generated domain name label of the container registry. This value defaults to "Unsecure".
234235
*/
236+
@added(Versions.vLatestPreview)
235237
autoGeneratedDomainNameLabelScope?: AutoGeneratedDomainNameLabelScope = AutoGeneratedDomainNameLabelScope.Unsecure;
236238
}
237239

@@ -335,6 +337,7 @@ model RegistryProperties {
335337
/**
336338
* Determines the domain name label reuse scope.
337339
*/
340+
@added(Versions.vLatestPreview)
338341
autoGeneratedDomainNameLabelScope?: AutoGeneratedDomainNameLabelScope = AutoGeneratedDomainNameLabelScope.Unsecure;
339342

340343
/**
@@ -710,6 +713,7 @@ model RegistryNameStatus {
710713
/**
711714
* The complete login server name with domain name label (DNL) hash, if available
712715
*/
716+
@added(Versions.vLatestPreview)
713717
availableLoginServerName?: string;
714718

715719
/**

specification/containerregistry/resource-manager/Microsoft.ContainerRegistry/Registry/stable/2025-11-01/containerregistry.json

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -5690,50 +5690,6 @@
56905690
"type": {
56915691
"$ref": "#/definitions/ContainerRegistryResourceType",
56925692
"description": "The resource type of the container registry. This field must be set to 'Microsoft.ContainerRegistry/registries'."
5693-
},
5694-
"resourceGroupName": {
5695-
"type": "string",
5696-
"description": "The resource group name of the container registry.",
5697-
"minLength": 1,
5698-
"maxLength": 90
5699-
},
5700-
"autoGeneratedDomainNameLabelScope": {
5701-
"type": "string",
5702-
"description": "The auto generated domain name label of the container registry. This value defaults to \"Unsecure\".",
5703-
"default": "Unsecure",
5704-
"enum": [
5705-
"Unsecure",
5706-
"TenantReuse",
5707-
"SubscriptionReuse",
5708-
"ResourceGroupReuse",
5709-
"NoReuse"
5710-
],
5711-
"x-ms-enum": {
5712-
"name": "AutoGeneratedDomainNameLabelScope",
5713-
"modelAsString": true,
5714-
"values": [
5715-
{
5716-
"name": "Unsecure",
5717-
"value": "Unsecure"
5718-
},
5719-
{
5720-
"name": "TenantReuse",
5721-
"value": "TenantReuse"
5722-
},
5723-
{
5724-
"name": "SubscriptionReuse",
5725-
"value": "SubscriptionReuse"
5726-
},
5727-
{
5728-
"name": "ResourceGroupReuse",
5729-
"value": "ResourceGroupReuse"
5730-
},
5731-
{
5732-
"name": "NoReuse",
5733-
"value": "NoReuse"
5734-
}
5735-
]
5736-
}
57375693
}
57385694
},
57395695
"required": [
@@ -5745,10 +5701,6 @@
57455701
"type": "object",
57465702
"description": "The result of a request to check the availability of a container registry name.",
57475703
"properties": {
5748-
"availableLoginServerName": {
5749-
"type": "string",
5750-
"description": "The complete login server name with domain name label (DNL) hash, if available"
5751-
},
57525704
"nameAvailable": {
57535705
"type": "boolean",
57545706
"description": "The value that indicates whether the name is available."
@@ -5918,44 +5870,6 @@
59185870
"description": "Enables registry-wide pull from unauthenticated clients.",
59195871
"default": false
59205872
},
5921-
"autoGeneratedDomainNameLabelScope": {
5922-
"type": "string",
5923-
"description": "Determines the domain name label reuse scope.",
5924-
"default": "Unsecure",
5925-
"enum": [
5926-
"Unsecure",
5927-
"TenantReuse",
5928-
"SubscriptionReuse",
5929-
"ResourceGroupReuse",
5930-
"NoReuse"
5931-
],
5932-
"x-ms-enum": {
5933-
"name": "AutoGeneratedDomainNameLabelScope",
5934-
"modelAsString": true,
5935-
"values": [
5936-
{
5937-
"name": "Unsecure",
5938-
"value": "Unsecure"
5939-
},
5940-
{
5941-
"name": "TenantReuse",
5942-
"value": "TenantReuse"
5943-
},
5944-
{
5945-
"name": "SubscriptionReuse",
5946-
"value": "SubscriptionReuse"
5947-
},
5948-
{
5949-
"name": "ResourceGroupReuse",
5950-
"value": "ResourceGroupReuse"
5951-
},
5952-
{
5953-
"name": "NoReuse",
5954-
"value": "NoReuse"
5955-
}
5956-
]
5957-
}
5958-
},
59595873
"roleAssignmentMode": {
59605874
"type": "string",
59615875
"description": "Determines registry role assignment mode.",

0 commit comments

Comments
 (0)