Skip to content

Commit 1fc0673

Browse files
committed
Custom to GET+PATCH api
1 parent da31422 commit 1fc0673

File tree

16 files changed

+583
-379
lines changed

16 files changed

+583
-379
lines changed

src/LoadTesting/LoadTesting.Autorest/Properties/AssemblyInfo.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,3 @@
2828

2929

3030

31-
32-

src/LoadTesting/LoadTesting.Autorest/README.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ module-version: 0.1.0
3838
subject-prefix: ""
3939
inlining-threshold: 200
4040

41+
# Disable transform IdentityType as GET+PUT can not replace patch
42+
flatten-userassignedidentity: false
43+
disable-transform-identity-type: true
44+
4145
directive:
4246
- where:
4347
variant: ^(Create|Update)(?!.*?(Expanded|JsonFilePath|JsonString))
@@ -72,12 +76,6 @@ directive:
7276
parameter-name: ManagedServiceIdentityType
7377
set:
7478
parameter-name: IdentityType
75-
76-
# Renaming user assigned identity parameter
77-
- where:
78-
parameter-name: IdentityUserAssignedIdentity
79-
set:
80-
parameter-name: UserAssignedIdentity
8179

8280
# Renaming encryption key parameter
8381
- where:

src/LoadTesting/LoadTesting.Autorest/custom/LoadTestResourceCustom.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ namespace Microsoft.Azure.PowerShell.Cmdlets.LoadTesting.Models
1010
public partial class EncryptionPropertiesIdentity
1111
{
1212
partial void AfterToJson(ref Microsoft.Azure.PowerShell.Cmdlets.LoadTesting.Runtime.Json.JsonObject container){
13-
if(string.IsNullOrEmpty(this.ResourceId))
13+
if (string.Empty.Equals(this.ResourceId))
1414
{
1515
container.Remove("resourceId");
16-
// Don't add null value back - completely remove the field for SystemAssigned identity
16+
container.Add("resourceId", Runtime.Json.XNull.Instance);
1717
}
1818
}
1919
}

src/LoadTesting/LoadTesting.Autorest/custom/New-AzLoad.ps1

Lines changed: 53 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -167,33 +167,74 @@ param(
167167

168168
process {
169169
try {
170-
# if encryption identity has a value, populate the encryption identity type and encryption identity resource id
170+
if ($PSBoundParameters.ContainsKey('EnableSystemAssignedIdentity') -or $PSBoundParameters.ContainsKey('UserAssignedIdentity')) {
171+
$supportsSystemAssignedIdentity = $PSBoundParameters.ContainsKey('EnableSystemAssignedIdentity')
172+
$supportsUserAssignedIdentity = $PSBoundParameters.ContainsKey("UserAssignedIdentity") -and $UserAssignedIdentity.Length -gt 0
173+
174+
# calculate IdentityType
175+
if (($supportsSystemAssignedIdentity -and $supportsUserAssignedIdentity)) {
176+
$PSBoundParameters.Add("IdentityType", "SystemAssigned,UserAssigned")
177+
}
178+
elseif ($supportsUserAssignedIdentity -and (-not $supportsSystemAssignedIdentity)) {
179+
$PSBoundParameters.Add("IdentityType", "UserAssigned")
180+
}
181+
elseif ((-not $supportsUserAssignedIdentity) -and $supportsSystemAssignedIdentity) {
182+
$PSBoundParameters.Add("IdentityType", "SystemAssigned")
183+
}
184+
else {
185+
$PSBoundParameters.Add("IdentityType", "None")
186+
}
187+
188+
# If user input UserAssignedIdentity
189+
if ($PSBoundParameters.ContainsKey('UserAssignedIdentity')) {
190+
$userIdentityObject = [Microsoft.Azure.PowerShell.Cmdlets.LoadTesting.Models.UserAssignedIdentity]::New()
191+
$PSBoundParameters.IdentityUserAssignedIdentity = @{}
192+
foreach ($item in $PSBoundParameters.UserAssignedIdentity) {
193+
$PSBoundParameters.IdentityUserAssignedIdentity.Add($item, $userIdentityObject )
194+
}
195+
196+
$null = $PSBoundParameters.Remove('UserAssignedIdentity')
197+
}
198+
199+
# remove EnableSystemAssignedIdentity
200+
if ($PSBoundParameters.ContainsKey('EnableSystemAssignedIdentity')) {
201+
$null = $PSBoundParameters.Remove("EnableSystemAssignedIdentity")
202+
}
203+
}
204+
205+
# if encryption identity has a value, populate the encryption identity type and encryption identity resource id
171206
# add the managed identity to the list of user assigned identities
172207
if ($PSBoundParameters.ContainsKey('EncryptionIdentity')) {
173208
$null = $PSBoundParameters.Add("EncryptionIdentityResourceId", $PSBoundParameters['EncryptionIdentity'])
174209
$null = $PSBoundParameters.Add("EncryptionIdentityType", 'UserAssigned')
175210
$null = $PSBoundParameters.Remove('EncryptionIdentity')
176-
$encryptionIdentityResourceId = $PSBoundParameters['EncryptionIdentityResourceId']
177-
178-
# Update the User Assigned Identities
179-
if ($PSBoundParameters.ContainsKey('UserAssignedIdentity')) {
180-
if ($null -eq $PSBoundParameters['UserAssignedIdentity']){
181-
$PSBoundParameters['UserAssignedIdentity'] = @()
211+
212+
# Update the identity type
213+
if($PSBoundParameters.ContainsKey('IdentityType')) {
214+
if($PSBoundParameters['IdentityType'].ToString().ToLower() -eq 'none') {
215+
$null = $PSBoundParameters.Add("IdentityType", 'UserAssigned')
182216
}
183-
$currentIdentities = $PSBoundParameters['UserAssignedIdentity']
184-
if ($encryptionIdentityResourceId -notin $currentIdentities) {
185-
$PSBoundParameters['UserAssignedIdentity'] = $currentIdentities + @($encryptionIdentityResourceId)
217+
elseif($PSBoundParameters['IdentityType'].ToString().ToLower() -eq 'systemassigned') {
218+
$null = $PSBoundParameters.Add("IdentityType", 'SystemAssigned,UserAssigned')
186219
}
187220
}
188221
else {
189-
$null = $PSBoundParameters.Add('UserAssignedIdentity', @($encryptionIdentityResourceId))
222+
$null = $PSBoundParameters.Add("IdentityType", 'UserAssigned')
190223
}
191224

225+
# Update the User Assigned Identities
226+
$userIdentityObject = [Microsoft.Azure.PowerShell.Cmdlets.LoadTesting.Models.UserAssignedIdentity]::New()
227+
if ($PSBoundParameters.ContainsKey('IdentityUserAssignedIdentity')) {
228+
$PSBoundParameters['IdentityUserAssignedIdentity'][$PSBoundParameters['EncryptionIdentityResourceId']] = $userIdentityObject
229+
}
230+
else {
231+
$null = $PSBoundParameters.Add("IdentityUserAssignedIdentity", @{ $PSBoundParameters['EncryptionIdentityResourceId'] = $userIdentityObject })
232+
}
192233
}
193234
Az.LoadTesting.internal\New-AzLoad @PSBoundParameters
194235
}
195236
catch {
196237
throw
197238
}
198239
}
199-
}
240+
}

src/LoadTesting/LoadTesting.Autorest/custom/Update-AzLoad.ps1

Lines changed: 101 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -154,49 +154,127 @@ param(
154154
# Use the default credentials for the proxy
155155
${ProxyUseDefaultCredentials}
156156
)
157-
158157

159158
process {
160159
try {
160+
if ($PSBoundParameters.ContainsKey('EnableSystemAssignedIdentity') -or $PSBoundParameters.ContainsKey('UserAssignedIdentity') ) {
161+
162+
$EnvPSBoundParameters = @{}
163+
if ($PSBoundParameters.ContainsKey('Debug')) {
164+
$EnvPSBoundParameters['Debug'] = $Debug
165+
}
166+
if ($PSBoundParameters.ContainsKey('HttpPipelineAppend')) {
167+
$EnvPSBoundParameters['HttpPipelineAppend'] = $HttpPipelineAppend
168+
}
169+
if ($PSBoundParameters.ContainsKey('HttpPipelinePrepend')) {
170+
$EnvPSBoundParameters['HttpPipelinePrepend'] = $HttpPipelinePrepend
171+
}
172+
if ($PSBoundParameters.ContainsKey('Proxy')) {
173+
$EnvPSBoundParameters['Proxy'] = $Proxy
174+
}
175+
if ($PSBoundParameters.ContainsKey('ProxyCredential')) {
176+
$EnvPSBoundParameters['ProxyCredential'] = $ProxyCredential
177+
}
178+
if ($PSBoundParameters.ContainsKey('ProxyUseDefaultCredentials')) {
179+
$EnvPSBoundParameters['ProxyUseDefaultCredentials'] = $ProxyUseDefaultCredentials
180+
}
181+
if ($PSBoundParameters.ContainsKey('DefaultProfile')) {
182+
$EnvPSBoundParameters['DefaultProfile'] = $DefaultProfile
183+
}
184+
185+
# Get LoadTesting DataObj
186+
$loadTestingObject = Az.LoadTesting.private\Get-AzLoad_Get -Name $Name -ResourceGroupName $ResourceGroupName -SubscriptionId $SubscriptionId @EnvPSBoundParameters
187+
188+
if ($null -eq $loadTestingObject) {
189+
throw "$Name doesn't exist"
190+
}
191+
192+
# If user input UserAssignedIdentity
193+
if ($PSBoundParameters.ContainsKey('UserAssignedIdentity')) {
194+
$userIdentityObject = [Microsoft.Azure.PowerShell.Cmdlets.LoadTesting.Models.UserAssignedIdentity]::New()
195+
$PSBoundParameters.IdentityUserAssignedIdentity = @{}
196+
foreach ($item in $PSBoundParameters.UserAssignedIdentity) {
197+
$PSBoundParameters.IdentityUserAssignedIdentity.Add($item, $userIdentityObject )
198+
}
199+
200+
if ($loadTestingObject.IdentityUserAssignedIdentity.Count -gt 0) {
201+
$loadTestingObject.IdentityUserAssignedIdentity.Keys | ForEach-Object {
202+
if (-NOT($_ -in $UserAssignedIdentity)) {
203+
$PSBoundParameters.IdentityUserAssignedIdentity.Add($_, $null)
204+
}
205+
}
206+
}
207+
}
208+
209+
# calculate IdentityType
210+
$supportsSystemAssignedIdentity = $EnableSystemAssignedIdentity -or (($null -eq $EnableSystemAssignedIdentity) -and ($loadTestingObject.IdentityType.Contains('SystemAssigned')))
211+
$supportsUserAssignedIdentity = ($PSBoundParameters.ContainsKey('UserAssignedIdentity') -and $UserAssignedIdentity.Length -gt 0) -or ((-not $PSBoundParameters.ContainsKey('UserAssignedIdentity')) -and ($loadTestingObject.IdentityType.Contains('UserAssigned')));
212+
if (($supportsSystemAssignedIdentity -and $supportsUserAssignedIdentity)) {
213+
$PSBoundParameters.Add("IdentityType", "SystemAssigned,UserAssigned")
214+
}
215+
elseif ($supportsUserAssignedIdentity -and (-not $supportsSystemAssignedIdentity)) {
216+
$PSBoundParameters.Add("IdentityType", "UserAssigned")
217+
}
218+
elseif ((-not $supportsUserAssignedIdentity) -and $supportsSystemAssignedIdentity) {
219+
$PSBoundParameters.Add("IdentityType", "SystemAssigned")
220+
}
221+
else {
222+
$PSBoundParameters.Add("IdentityType", "None")
223+
}
224+
225+
# remove EnableSystemAssignedIdentity
226+
if ($PSBoundParameters.ContainsKey('EnableSystemAssignedIdentity')) {
227+
$null = $PSBoundParameters.Remove("EnableSystemAssignedIdentity")
228+
}
229+
# remove UserAssignedIdentity
230+
if ($PSBoundParameters.ContainsKey('UserAssignedIdentity')) {
231+
$null = $PSBoundParameters.Remove('UserAssignedIdentity')
232+
}
233+
}
234+
161235
# if encryption identity has a value, populate the encryption identity type and encryption identity resource id
162236
# if encryption identity has value SystemAssigned, populate the encryption identity type as SystemAssigned and encryption identity resource id as null
163237
# else populate the encryption identity type as UserAssigned and encryption identity resource id as the value of encryption identity
164238
if ($PSBoundParameters.ContainsKey('EncryptionIdentity')) {
165239
if($PSBoundParameters['EncryptionIdentity'].ToLower() -eq 'systemassigned') {
166240
$null = $PSBoundParameters.Add("EncryptionIdentityType", 'SystemAssigned')
167-
168-
# For SystemAssigned encryption identity, we should NOT include EncryptionIdentityResourceId
169-
# Remove it if it exists in the parameters
170241
if($PSBoundParameters.ContainsKey('EncryptionIdentityResourceId')) {
171-
$null = $PSBoundParameters.Remove('EncryptionIdentityResourceId')
242+
$PSBoundParameters['EncryptionIdentityResourceId'] = $null
172243
}
173-
174-
# CRITICAL: Explicitly set to empty string to prevent AutoRest from inferring from UserAssignedIdentity
175-
# This ensures the AfterToJson method will completely remove the resourceId field
176-
$null = $PSBoundParameters.Add('EncryptionIdentityResourceId', '')
177-
244+
else {
245+
$PSBoundParameters.Add('EncryptionIdentityResourceId', $null)
246+
}
247+
178248
# Update the identity type only if the input does not contain the encryption identity type
179-
# Update EnableSystemAssignedIdentity to enable system assigned identity
180-
# For user assigned identity, it will pass the value automatically if exist
181-
$PSBoundParameters['EnableSystemAssignedIdentity'] = $true
249+
if($PSBoundParameters.ContainsKey('IdentityType')) {
250+
if($PSBoundParameters['IdentityType'].ToString().ToLower() -eq 'none') {
251+
$PSBoundParameters['IdentityType'] = 'SystemAssigned'
252+
}
253+
elseif($PSBoundParameters['IdentityType'].ToString().ToLower() -eq 'userassigned') {
254+
$PSBoundParameters['IdentityType'] = 'SystemAssigned,UserAssigned'
255+
}
256+
}
182257
}
183258
else {
184259
$null = $PSBoundParameters.Add("EncryptionIdentityResourceId", $PSBoundParameters['EncryptionIdentity'])
185260
$null = $PSBoundParameters.Add("EncryptionIdentityType", 'UserAssigned')
186261

187262
# Update the identity type only if the input does not contain the encryption identity type
188-
$encryptionIdentityResourceId = $PSBoundParameters['EncryptionIdentity']
189-
if ($PSBoundParameters.ContainsKey('UserAssignedIdentity')) {
190-
if ($null -eq $PSBoundParameters['UserAssignedIdentity']){
191-
$PSBoundParameters['UserAssignedIdentity'] = @()
263+
if($PSBoundParameters.ContainsKey('IdentityType')) {
264+
if($PSBoundParameters['IdentityType'].ToString().ToLower() -eq 'none') {
265+
$PSBoundParameters['IdentityType'] = 'UserAssigned'
192266
}
193-
194-
$currentIdentities = $PSBoundParameters['UserAssignedIdentity']
195-
if ($encryptionIdentityResourceId -notin $currentIdentities) {
196-
$PSBoundParameters['UserAssignedIdentity'] = $currentIdentities + @($encryptionIdentityResourceId)
267+
if($PSBoundParameters['IdentityType'].ToString().ToLower() -eq 'systemassigned') {
268+
$PSBoundParameters['IdentityType'] = 'SystemAssigned,UserAssigned'
197269
}
198-
} else {
199-
$null = $PSBoundParameters.Add('UserAssignedIdentity', @($encryptionIdentityResourceId))
270+
}
271+
272+
$userIdentityObject = [Microsoft.Azure.PowerShell.Cmdlets.LoadTesting.Models.UserAssignedIdentity]::New()
273+
if ($PSBoundParameters.ContainsKey('IdentityUserAssignedIdentity')) {
274+
$PSBoundParameters['IdentityUserAssignedIdentity'][$PSBoundParameters['EncryptionIdentityResourceId']] = $userIdentityObject
275+
}
276+
else {
277+
$null = $PSBoundParameters.Add("IdentityUserAssignedIdentity", @{ $PSBoundParameters['EncryptionIdentityResourceId'] = $userIdentityObject })
200278
}
201279
}
202280
$null = $PSBoundParameters.Remove('EncryptionIdentity')
@@ -208,4 +286,3 @@ param(
208286
}
209287
}
210288
}
211-

src/LoadTesting/LoadTesting.Autorest/docs/Az.LoadTesting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ Create LoadTest resource.
2121
Delete a LoadTest resource.
2222

2323
### [Update-AzLoad](Update-AzLoad.md)
24-
Update LoadTest resource.
24+
Update a loadtest resource.
2525

0 commit comments

Comments
 (0)