Skip to content

Commit 90d2bdf

Browse files
authored
Add new properties for Prov script for MDP (#43698)
The changes in summary: Make DevCenterProjectID optional. This hasn't been used internally, and was a remnant from early plans to fold this into DevCenter that didn't come to fruition. Telemetry confirms that this is entirely unused. We attended breaking change office hours and have CVP approval. Add new properties to the OrganizationProfile - this allows customers to customize ownership/descriptions in Azure DevOps at the pool level instead of in Azure DevOps. Added new Provisioning Script properties for an upcoming announced feature Add new VmSizes to allow an upcoming InstanceMix feature. Note on this, the current SkuName is being reused internall for this. Things will work exactly as expected now, but the new optional vmSizes can be set if the name == "Mix". I've added examples for the new flow. While the API will technically accept name != "mix" for this case, validation will fail it on the backend.
1 parent ab08a9a commit 90d2bdf

31 files changed

Lines changed: 4339 additions & 3 deletions
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
{
2+
"title": "Pools_CreateOrUpdate",
3+
"operationId": "Pools_CreateOrUpdate",
4+
"parameters": {
5+
"api-version": "2026-06-02",
6+
"subscriptionId": "a2e95d27-c161-4b61-bda4-11512c14c2c2",
7+
"resourceGroupName": "rg",
8+
"poolName": "pool",
9+
"resource": {
10+
"location": "eastus",
11+
"properties": {
12+
"provisioningState": "Succeeded",
13+
"maximumConcurrency": 10,
14+
"devCenterProjectResourceId": "/subscriptions/222e81d0-cf38-4dab-baa5-289bf16baaa4/resourceGroups/rg-1es-devcenter/providers/Microsoft.DevCenter/projects/1ES",
15+
"organizationProfile": {
16+
"kind": "AzureDevOps",
17+
"description": "Managed by Managed DevOps Pools",
18+
"updateDescription": true,
19+
"organizations": [
20+
{
21+
"url": "https://mseng.visualstudio.com",
22+
"openAccess": true
23+
}
24+
]
25+
},
26+
"agentProfile": {
27+
"kind": "Stateless"
28+
},
29+
"fabricProfile": {
30+
"kind": "Vmss",
31+
"sku": {
32+
"name": "Standard_D4ads_v5"
33+
},
34+
"images": [
35+
{
36+
"resourceId": "/MicrosoftWindowsServer/WindowsServer/2019-Datacenter/latest",
37+
"ephemeralType": "Automatic",
38+
"provisioningScriptStorageAccountResourceId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/provisioningscriptsa",
39+
"provisioningScriptManagedIdentityClientId": "0f8fad5b-d9cb-469f-a165-70867728950e",
40+
"provisioningScriptShouldRestart": true,
41+
"provisioningScriptEntryPoint": "scripts/setup-agent.ps1"
42+
}
43+
],
44+
"osProfile": {
45+
"secretsManagementSettings": {
46+
"certificateStoreName": "Root",
47+
"observedCertificates": [
48+
"https://abc.vault.azure.net/secrets/one"
49+
],
50+
"keyExportable": false
51+
}
52+
},
53+
"networkProfile": {
54+
"subnetId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/subnet",
55+
"staticIpAddressCount": 2
56+
}
57+
}
58+
}
59+
}
60+
},
61+
"responses": {
62+
"201": {
63+
"headers": {
64+
"Azure-AsyncOperation": "https://contoso.com/operationstatus"
65+
},
66+
"body": {
67+
"properties": {
68+
"provisioningState": "Succeeded",
69+
"maximumConcurrency": 10,
70+
"devCenterProjectResourceId": "/subscriptions/222e81d0-cf38-4dab-baa5-289bf16baaa4/resourceGroups/rg-1es-devcenter/providers/Microsoft.DevCenter/projects/1ES",
71+
"organizationProfile": {
72+
"kind": "AzureDevOps",
73+
"description": "Managed by Managed DevOps Pools",
74+
"updateDescription": true,
75+
"organizations": [
76+
{
77+
"url": "https://mseng.visualstudio.com"
78+
}
79+
]
80+
},
81+
"agentProfile": {
82+
"kind": "Stateless"
83+
},
84+
"fabricProfile": {
85+
"kind": "Vmss",
86+
"sku": {
87+
"name": "Standard_D4ads_v5"
88+
},
89+
"images": [
90+
{
91+
"resourceId": "/MicrosoftWindowsServer/WindowsServer/2019-Datacenter/latest",
92+
"ephemeralType": "Automatic",
93+
"isEphemeral": true,
94+
"provisioningScriptStorageAccountResourceId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/provisioningscriptsa",
95+
"provisioningScriptManagedIdentityClientId": "0f8fad5b-d9cb-469f-a165-70867728950e",
96+
"provisioningScriptShouldRestart": true,
97+
"provisioningScriptEntryPoint": "scripts/setup-agent.ps1"
98+
}
99+
],
100+
"osProfile": {
101+
"secretsManagementSettings": {
102+
"certificateStoreName": "Root",
103+
"observedCertificates": [
104+
"https://abc.vault.azure.net/secrets/one"
105+
],
106+
"keyExportable": false
107+
}
108+
},
109+
"networkProfile": {
110+
"subnetId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/subnet",
111+
"staticIpAddressCount": 2,
112+
"ipAddresses": [
113+
"1.1.1.1",
114+
"2.2.2.2"
115+
]
116+
}
117+
}
118+
},
119+
"id": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.DevOpsInfrastructure/Pools/pool",
120+
"location": "eastus"
121+
}
122+
},
123+
"200": {
124+
"body": {
125+
"properties": {
126+
"provisioningState": "Succeeded",
127+
"maximumConcurrency": 10,
128+
"devCenterProjectResourceId": "/subscriptions/222e81d0-cf38-4dab-baa5-289bf16baaa4/resourceGroups/rg-1es-devcenter/providers/Microsoft.DevCenter/projects/1ES",
129+
"organizationProfile": {
130+
"kind": "AzureDevOps",
131+
"description": "Managed by Managed DevOps Pools",
132+
"updateDescription": true,
133+
"organizations": [
134+
{
135+
"url": "https://mseng.visualstudio.com"
136+
}
137+
]
138+
},
139+
"agentProfile": {
140+
"kind": "Stateless"
141+
},
142+
"fabricProfile": {
143+
"kind": "Vmss",
144+
"sku": {
145+
"name": "Standard_D4ads_v5"
146+
},
147+
"images": [
148+
{
149+
"resourceId": "/MicrosoftWindowsServer/WindowsServer/2019-Datacenter/latest",
150+
"ephemeralType": "Automatic",
151+
"isEphemeral": true,
152+
"provisioningScriptStorageAccountResourceId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/provisioningscriptsa",
153+
"provisioningScriptManagedIdentityClientId": "0f8fad5b-d9cb-469f-a165-70867728950e",
154+
"provisioningScriptShouldRestart": true,
155+
"provisioningScriptEntryPoint": "scripts/setup-agent.ps1"
156+
}
157+
],
158+
"osProfile": {
159+
"secretsManagementSettings": {
160+
"certificateStoreName": "Root",
161+
"observedCertificates": [
162+
"https://abc.vault.azure.net/secrets/one"
163+
],
164+
"keyExportable": false
165+
}
166+
},
167+
"networkProfile": {
168+
"subnetId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/subnet",
169+
"staticIpAddressCount": 2,
170+
"ipAddresses": [
171+
"1.1.1.1",
172+
"2.2.2.2"
173+
]
174+
}
175+
}
176+
},
177+
"id": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.DevOpsInfrastructure/Pools/pool",
178+
"location": "eastus"
179+
}
180+
}
181+
}
182+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
{
2+
"title": "Pools_CreateOrUpdate_InstanceMix",
3+
"operationId": "Pools_CreateOrUpdate",
4+
"parameters": {
5+
"api-version": "2026-06-02",
6+
"subscriptionId": "a2e95d27-c161-4b61-bda4-11512c14c2c2",
7+
"resourceGroupName": "rg",
8+
"poolName": "pool",
9+
"resource": {
10+
"location": "eastus",
11+
"properties": {
12+
"provisioningState": "Succeeded",
13+
"maximumConcurrency": 10,
14+
"devCenterProjectResourceId": "/subscriptions/222e81d0-cf38-4dab-baa5-289bf16baaa4/resourceGroups/rg-1es-devcenter/providers/Microsoft.DevCenter/projects/1ES",
15+
"organizationProfile": {
16+
"kind": "AzureDevOps",
17+
"description": "Managed by Managed DevOps Pools",
18+
"updateDescription": true,
19+
"organizations": [
20+
{
21+
"url": "https://mseng.visualstudio.com",
22+
"openAccess": true
23+
}
24+
]
25+
},
26+
"agentProfile": {
27+
"kind": "Stateless"
28+
},
29+
"fabricProfile": {
30+
"kind": "Vmss",
31+
"sku": {
32+
"name": "Mix",
33+
"vmSizes": [
34+
{
35+
"name": "Standard_E2ads_v5"
36+
},
37+
{
38+
"name": "Standard_D2ads_v5"
39+
}
40+
]
41+
},
42+
"images": [
43+
{
44+
"resourceId": "/MicrosoftWindowsServer/WindowsServer/2019-Datacenter/latest",
45+
"ephemeralType": "Automatic",
46+
"provisioningScriptStorageAccountResourceId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/provisioningscriptsa",
47+
"provisioningScriptManagedIdentityClientId": "0f8fad5b-d9cb-469f-a165-70867728950e",
48+
"provisioningScriptShouldRestart": true,
49+
"provisioningScriptEntryPoint": "scripts/setup-agent.ps1"
50+
}
51+
],
52+
"osProfile": {
53+
"secretsManagementSettings": {
54+
"certificateStoreName": "Root",
55+
"observedCertificates": [
56+
"https://abc.vault.azure.net/secrets/one"
57+
],
58+
"keyExportable": false
59+
}
60+
},
61+
"networkProfile": {
62+
"subnetId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/subnet",
63+
"staticIpAddressCount": 2
64+
}
65+
}
66+
}
67+
}
68+
},
69+
"responses": {
70+
"201": {
71+
"headers": {
72+
"Azure-AsyncOperation": "https://contoso.com/operationstatus"
73+
},
74+
"body": {
75+
"properties": {
76+
"provisioningState": "Succeeded",
77+
"maximumConcurrency": 10,
78+
"devCenterProjectResourceId": "/subscriptions/222e81d0-cf38-4dab-baa5-289bf16baaa4/resourceGroups/rg-1es-devcenter/providers/Microsoft.DevCenter/projects/1ES",
79+
"organizationProfile": {
80+
"kind": "AzureDevOps",
81+
"description": "Managed by Managed DevOps Pools",
82+
"updateDescription": true,
83+
"organizations": [
84+
{
85+
"url": "https://mseng.visualstudio.com"
86+
}
87+
]
88+
},
89+
"agentProfile": {
90+
"kind": "Stateless"
91+
},
92+
"fabricProfile": {
93+
"kind": "Vmss",
94+
"sku": {
95+
"name": "Mix",
96+
"vmSizes": [
97+
{
98+
"name": "Standard_E2ads_v5"
99+
},
100+
{
101+
"name": "Standard_D2ads_v5"
102+
}
103+
]
104+
},
105+
"images": [
106+
{
107+
"resourceId": "/MicrosoftWindowsServer/WindowsServer/2019-Datacenter/latest",
108+
"ephemeralType": "Automatic",
109+
"isEphemeral": true,
110+
"provisioningScriptStorageAccountResourceId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/provisioningscriptsa",
111+
"provisioningScriptManagedIdentityClientId": "0f8fad5b-d9cb-469f-a165-70867728950e",
112+
"provisioningScriptShouldRestart": true,
113+
"provisioningScriptEntryPoint": "scripts/setup-agent.ps1"
114+
}
115+
],
116+
"osProfile": {
117+
"secretsManagementSettings": {
118+
"certificateStoreName": "Root",
119+
"observedCertificates": [
120+
"https://abc.vault.azure.net/secrets/one"
121+
],
122+
"keyExportable": false
123+
}
124+
},
125+
"networkProfile": {
126+
"subnetId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/subnet",
127+
"staticIpAddressCount": 2,
128+
"ipAddresses": [
129+
"1.1.1.1",
130+
"2.2.2.2"
131+
]
132+
}
133+
}
134+
},
135+
"id": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.DevOpsInfrastructure/Pools/pool",
136+
"location": "eastus"
137+
}
138+
},
139+
"200": {
140+
"body": {
141+
"properties": {
142+
"provisioningState": "Succeeded",
143+
"maximumConcurrency": 10,
144+
"devCenterProjectResourceId": "/subscriptions/222e81d0-cf38-4dab-baa5-289bf16baaa4/resourceGroups/rg-1es-devcenter/providers/Microsoft.DevCenter/projects/1ES",
145+
"organizationProfile": {
146+
"kind": "AzureDevOps",
147+
"description": "Managed by Managed DevOps Pools",
148+
"updateDescription": true,
149+
"organizations": [
150+
{
151+
"url": "https://mseng.visualstudio.com"
152+
}
153+
]
154+
},
155+
"agentProfile": {
156+
"kind": "Stateless"
157+
},
158+
"fabricProfile": {
159+
"kind": "Vmss",
160+
"sku": {
161+
"name": "Mix",
162+
"vmSizes": [
163+
{
164+
"name": "Standard_E2ads_v5"
165+
},
166+
{
167+
"name": "Standard_D2ads_v5"
168+
}
169+
]
170+
},
171+
"images": [
172+
{
173+
"resourceId": "/MicrosoftWindowsServer/WindowsServer/2019-Datacenter/latest",
174+
"ephemeralType": "Automatic",
175+
"isEphemeral": true,
176+
"provisioningScriptStorageAccountResourceId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Storage/storageAccounts/provisioningscriptsa",
177+
"provisioningScriptManagedIdentityClientId": "0f8fad5b-d9cb-469f-a165-70867728950e",
178+
"provisioningScriptShouldRestart": true,
179+
"provisioningScriptEntryPoint": "scripts/setup-agent.ps1"
180+
}
181+
],
182+
"osProfile": {
183+
"secretsManagementSettings": {
184+
"certificateStoreName": "Root",
185+
"observedCertificates": [
186+
"https://abc.vault.azure.net/secrets/one"
187+
],
188+
"keyExportable": false
189+
}
190+
},
191+
"networkProfile": {
192+
"subnetId": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.Network/virtualNetworks/vnet/subnets/subnet",
193+
"staticIpAddressCount": 2,
194+
"ipAddresses": [
195+
"1.1.1.1",
196+
"2.2.2.2"
197+
]
198+
}
199+
}
200+
},
201+
"id": "/subscriptions/a2e95d27-c161-4b61-bda4-11512c14c2c2/resourceGroups/rg/providers/Microsoft.DevOpsInfrastructure/Pools/pool",
202+
"location": "eastus"
203+
}
204+
}
205+
}
206+
}

0 commit comments

Comments
 (0)