Skip to content

Commit 7d8d333

Browse files
authored
Merge pull request Azure#8711 from maddieclayton/kvwildcard
Add wildcard support to KeyVault cmdlets
2 parents cd71b15 + 9052f55 commit 7d8d333

24 files changed

+1346
-753
lines changed

src/KeyVault/KeyVault.Test/Scripts/ControlPlane/KeyVaultManagementTests.ps1

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,44 @@ function Test-ListVaults
322322
Assert-AreEqual (Normalize-Location $vaultLocation) (Normalize-Location $v.Location)
323323
}
324324

325+
$list = Get-AzKeyVault -ResourceGroupName $rgName -VaultName *
326+
Assert-NotNull $list
327+
Assert-True { $list.Count -eq 2 }
328+
foreach($v in $list)
329+
{
330+
Assert-NotNull $v.VaultName
331+
Assert-AreEqual $rgName $v.ResourceGroupName
332+
Assert-AreEqual (Normalize-Location $vaultLocation) (Normalize-Location $v.Location)
333+
}
334+
335+
$list = Get-AzKeyVault -ResourceGroupName * -VaultName *
336+
Assert-NotNull $list
337+
Assert-True { $list.Count -gt 1 }
338+
foreach($v in $list)
339+
{
340+
Assert-NotNull $v.VaultName
341+
Assert-NotNull $v.ResourceGroupName
342+
}
343+
344+
$list = Get-AzKeyVault -ResourceGroupName * -VaultName $vault1Name
345+
Assert-NotNull $list
346+
Assert-True { $list.Count -eq 1 }
347+
foreach($v in $list)
348+
{
349+
Assert-NotNull $v.VaultName
350+
Assert-AreEqual $rgName $v.ResourceGroupName
351+
Assert-AreEqual (Normalize-Location $vaultLocation) (Normalize-Location $v.Location)
352+
}
353+
354+
$list = Get-AzKeyVault -VaultName *
355+
Assert-NotNull $list
356+
Assert-True { $list.Count -gt 1 }
357+
foreach($v in $list)
358+
{
359+
Assert-NotNull $v.VaultName
360+
Assert-NotNull $v.ResourceGroupName
361+
}
362+
325363
$list = Get-AzKeyVault -Tag $tag
326364
Assert-NotNull $list
327365
Assert-True { $list.Count -eq 1 }

src/KeyVault/KeyVault.Test/SessionRecords/Microsoft.Azure.Commands.KeyVault.Test.ScenarioTests.KeyVaultManagementTests/TestListVaults.json

Lines changed: 990 additions & 660 deletions
Large diffs are not rendered by default.

src/KeyVault/KeyVault/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
- Additional information about change #1
1919
-->
2020
## Upcoming Release
21+
* Added wildcard support to KeyVault cmdlets
2122

2223
## Version 1.0.2
2324
* Fix tagging on Set-AzKeyVaultSecret

src/KeyVault/KeyVault/Commands/GetAzureKeyVault.cs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,14 @@
2222

2323
namespace Microsoft.Azure.Commands.KeyVault
2424
{
25-
[Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "KeyVault",DefaultParameterSetName = ListVaultsBySubParameterSet)]
25+
[Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "KeyVault",DefaultParameterSetName = GetVaultParameterSet)]
2626
[OutputType(typeof(PSKeyVault), typeof(PSKeyVaultIdentityItem), typeof(PSDeletedKeyVault))]
2727
public class GetAzureKeyVault : KeyVaultManagementCmdletBase
2828
{
2929
#region Parameter Set Names
3030

3131
private const string GetVaultParameterSet = "GetVaultByName";
3232
private const string GetDeletedVaultParameterSet = "ByDeletedVault";
33-
private const string ListVaultsBySubParameterSet = "ListAllVaultsInSubscription";
3433
private const string ListDeletedVaultsParameterSet = "ListAllDeletedVaultsInSubscription";
3534

3635
#endregion
@@ -89,7 +88,7 @@ public class GetAzureKeyVault : KeyVaultManagementCmdletBase
8988
/// </summary>
9089
[Parameter(
9190
Mandatory = false,
92-
ParameterSetName = ListVaultsBySubParameterSet,
91+
ParameterSetName = GetVaultParameterSet,
9392
ValueFromPipelineByPropertyName = true,
9493
HelpMessage = "Specifies the key and optional value of the specified tag to filter the list of key vaults by.")]
9594
public Hashtable Tag { get; set; }
@@ -103,22 +102,19 @@ public override void ExecuteCmdlet()
103102
ResourceGroupName = string.IsNullOrWhiteSpace(ResourceGroupName) ? GetResourceGroupName(VaultName) : ResourceGroupName;
104103
PSKeyVault vault = null;
105104

106-
if (string.IsNullOrEmpty(VaultName))
105+
if (ShouldGetByName(ResourceGroupName, VaultName))
107106
{
108-
WriteObject(ListVaults(ResourceGroupName, Tag), true);
109-
break;
110-
}
111-
112-
if (!string.IsNullOrWhiteSpace(ResourceGroupName))
113107
vault = KeyVaultManagementClient.GetVault(
114108
VaultName,
115109
ResourceGroupName,
116110
ActiveDirectoryClient);
117-
WriteObject(vault);
118-
break;
119-
120-
case ListVaultsBySubParameterSet:
121-
WriteObject(ListVaults(ResourceGroupName, Tag), true);
111+
WriteObject(FilterByTag(vault, Tag));
112+
}
113+
else
114+
{
115+
WriteObject(TopLevelWildcardFilter(ResourceGroupName, VaultName, ListVaults(ResourceGroupName, Tag)), true);
116+
}
117+
122118
break;
123119

124120
case GetDeletedVaultParameterSet:

src/KeyVault/KeyVault/Commands/GetAzureKeyVaultCertificate.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -233,28 +233,28 @@ public override void ExecuteCmdlet()
233233
}
234234
else if (InRemovedState)
235235
{
236-
if (Name == null)
236+
if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name))
237237
{
238-
GetAndWriteDeletedCertificates(VaultName);
238+
GetAndWriteDeletedCertificates(VaultName, Name);
239239
}
240240
else
241241
{
242242
PSDeletedKeyVaultCertificate deletedCert = DataServiceClient.GetDeletedCertificate(VaultName, Name);
243243
WriteObject(deletedCert);
244244
}
245245
}
246-
else if (!string.IsNullOrEmpty(Name))
246+
else if (!string.IsNullOrEmpty(Name) && !WildcardPattern.ContainsWildcardCharacters(Name))
247247
{
248248
certBundle = this.DataServiceClient.GetCertificate(VaultName, Name, string.Empty);
249249
this.WriteObject(certBundle);
250250
}
251251
else
252252
{
253-
GetAndWriteCertificates(VaultName);
253+
GetAndWriteCertificates(VaultName, Name);
254254
}
255255
}
256256

257-
private void GetAndWriteCertificates(string vaultName)
257+
private void GetAndWriteCertificates(string vaultName, string name)
258258
{
259259
var options = new KeyVaultCertificateFilterOptions
260260
{
@@ -266,7 +266,7 @@ private void GetAndWriteCertificates(string vaultName)
266266
do
267267
{
268268
var pageResults = DataServiceClient.GetCertificates(options);
269-
WriteObject(pageResults, true);
269+
WriteObject(KVSubResourceWildcardFilter(name, pageResults), true);
270270
} while (!string.IsNullOrEmpty(options.NextLink));
271271
}
272272

@@ -286,7 +286,7 @@ private void GetAndWriteCertificatesVersions(string vaultName, string name, stri
286286
} while (!string.IsNullOrEmpty(options.NextLink));
287287
}
288288

289-
private void GetAndWriteDeletedCertificates( string vaultName )
289+
private void GetAndWriteDeletedCertificates( string vaultName, string name )
290290
{
291291
var options = new KeyVaultCertificateFilterOptions
292292
{
@@ -298,7 +298,7 @@ private void GetAndWriteDeletedCertificates( string vaultName )
298298
do
299299
{
300300
var pageResults = DataServiceClient.GetDeletedCertificates(options);
301-
WriteObject( pageResults, true );
301+
WriteObject(KVSubResourceWildcardFilter(name, pageResults), true );
302302
} while ( !string.IsNullOrEmpty( options.NextLink ) );
303303
}
304304
}

src/KeyVault/KeyVault/Commands/GetAzureKeyVaultCertificateIssuer.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,9 @@ public override void ExecuteCmdlet()
9494
VaultName = parsedResourceId.ResourceName;
9595
}
9696

97-
if (string.IsNullOrEmpty(Name))
97+
if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name))
9898
{
99-
GetAndWriteCertificateIssuers(VaultName);
99+
GetAndWriteCertificateIssuers(VaultName, Name);
100100
}
101101
else
102102
{
@@ -109,7 +109,7 @@ public override void ExecuteCmdlet()
109109
}
110110
}
111111

112-
private void GetAndWriteCertificateIssuers(string vaultName)
112+
private void GetAndWriteCertificateIssuers(string vaultName, string name)
113113
{
114114
KeyVaultObjectFilterOptions options = new KeyVaultObjectFilterOptions
115115
{
@@ -126,7 +126,7 @@ private void GetAndWriteCertificateIssuers(string vaultName)
126126
page.VaultName = VaultName;
127127
psPageResults.Add(page);
128128
}
129-
WriteObject(psPageResults, true);
129+
WriteObject(KVSubResourceWildcardFilter(name, psPageResults), true);
130130
} while (!string.IsNullOrEmpty(options.NextLink));
131131
}
132132
}

src/KeyVault/KeyVault/Commands/GetAzureKeyVaultKey.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,9 @@ public override void ExecuteCmdlet()
220220
}
221221
else if (InRemovedState)
222222
{
223-
if (Name == null)
223+
if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name))
224224
{
225-
GetAndWriteDeletedKeys(VaultName);
225+
GetAndWriteDeletedKeys(VaultName, Name);
226226
}
227227
else
228228
{
@@ -232,9 +232,9 @@ public override void ExecuteCmdlet()
232232
}
233233
else
234234
{
235-
if (string.IsNullOrEmpty(Name))
235+
if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name))
236236
{
237-
GetAndWriteKeys(VaultName);
237+
GetAndWriteKeys(VaultName, Name);
238238
}
239239
else
240240
{
@@ -244,21 +244,21 @@ public override void ExecuteCmdlet()
244244
}
245245
}
246246

247-
private void GetAndWriteKeys(string vaultName) =>
247+
private void GetAndWriteKeys(string vaultName, string name) =>
248248
GetAndWriteObjects(new KeyVaultObjectFilterOptions
249249
{
250250
VaultName = vaultName,
251251
NextLink = null
252252
},
253-
(options) => DataServiceClient.GetKeys(options));
253+
(options) => KVSubResourceWildcardFilter(name, DataServiceClient.GetKeys(options)));
254254

255-
private void GetAndWriteDeletedKeys(string vaultName) =>
255+
private void GetAndWriteDeletedKeys(string vaultName, string name) =>
256256
GetAndWriteObjects(new KeyVaultObjectFilterOptions
257257
{
258258
VaultName = vaultName,
259259
NextLink = null
260260
},
261-
(options) => DataServiceClient.GetDeletedKeys(options));
261+
(options) => KVSubResourceWildcardFilter(name, DataServiceClient.GetDeletedKeys(options)));
262262

263263
private void GetAndWriteKeyVersions(string vaultName, string name, string currentKeyVersion) =>
264264
GetAndWriteObjects(new KeyVaultObjectFilterOptions

src/KeyVault/KeyVault/Commands/GetAzureKeyVaultSecret.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -219,9 +219,9 @@ public override void ExecuteCmdlet()
219219
}
220220
else if (InRemovedState)
221221
{
222-
if (Name == null)
222+
if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name))
223223
{
224-
GetAndWriteDeletedSecrets(VaultName);
224+
GetAndWriteDeletedSecrets(VaultName, Name);
225225
}
226226
else
227227
{
@@ -231,9 +231,9 @@ public override void ExecuteCmdlet()
231231
}
232232
else
233233
{
234-
if (string.IsNullOrEmpty(Name))
234+
if (string.IsNullOrEmpty(Name) || WildcardPattern.ContainsWildcardCharacters(Name))
235235
{
236-
GetAndWriteSecrets(VaultName);
236+
GetAndWriteSecrets(VaultName, Name);
237237
}
238238
else
239239
{
@@ -243,21 +243,21 @@ public override void ExecuteCmdlet()
243243
}
244244
}
245245

246-
private void GetAndWriteDeletedSecrets(string vaultName) =>
246+
private void GetAndWriteDeletedSecrets(string vaultName, string name) =>
247247
GetAndWriteObjects(new KeyVaultObjectFilterOptions
248248
{
249249
VaultName = vaultName,
250250
NextLink = null
251251
},
252-
(options) => DataServiceClient.GetDeletedSecrets(options));
252+
(options) => KVSubResourceWildcardFilter(name, DataServiceClient.GetDeletedSecrets(options)));
253253

254-
private void GetAndWriteSecrets(string vaultName) =>
254+
private void GetAndWriteSecrets(string vaultName, string name) =>
255255
GetAndWriteObjects(new KeyVaultObjectFilterOptions
256256
{
257257
VaultName = vaultName,
258258
NextLink = null
259259
},
260-
(options) => DataServiceClient.GetSecrets(options));
260+
(options) => KVSubResourceWildcardFilter(name, DataServiceClient.GetSecrets(options)));
261261

262262
private void GetAndWriteSecretVersions(string vaultName, string name, string currentSecretVersion) =>
263263
GetAndWriteObjects(new KeyVaultObjectFilterOptions

src/KeyVault/KeyVault/Commands/ManagedStorageAccounts/GetAzureKeyVaultManagedStorageAccount.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,9 @@ public override void ExecuteCmdlet()
9797

9898
if (InRemovedState)
9999
{
100-
if (String.IsNullOrWhiteSpace(AccountName))
100+
if (String.IsNullOrWhiteSpace(AccountName) || WildcardPattern.ContainsWildcardCharacters(AccountName))
101101
{
102-
GetAndWriteDeletedManagedStorageAccounts(VaultName);
102+
GetAndWriteDeletedManagedStorageAccounts(VaultName, AccountName);
103103
}
104104
else
105105
{
@@ -109,9 +109,9 @@ public override void ExecuteCmdlet()
109109
}
110110
else
111111
{
112-
if (String.IsNullOrWhiteSpace(AccountName))
112+
if (String.IsNullOrWhiteSpace(AccountName) || WildcardPattern.ContainsWildcardCharacters(AccountName))
113113
{
114-
GetAndWriteManagedStorageAccounts(VaultName);
114+
GetAndWriteManagedStorageAccounts(VaultName, AccountName);
115115
}
116116
else
117117
{
@@ -121,7 +121,7 @@ public override void ExecuteCmdlet()
121121
}
122122
}
123123

124-
private void GetAndWriteManagedStorageAccounts( string vaultName )
124+
private void GetAndWriteManagedStorageAccounts( string vaultName, string name )
125125
{
126126
var options = new KeyVaultObjectFilterOptions
127127
{
@@ -130,11 +130,11 @@ private void GetAndWriteManagedStorageAccounts( string vaultName )
130130
};
131131
do
132132
{
133-
WriteObject( DataServiceClient.GetManagedStorageAccounts( options ), true );
133+
WriteObject(KVSubResourceWildcardFilter(name, DataServiceClient.GetManagedStorageAccounts( options )), true );
134134
} while( !string.IsNullOrEmpty( options.NextLink ) );
135135
}
136136

137-
private void GetAndWriteDeletedManagedStorageAccounts(string vaultName)
137+
private void GetAndWriteDeletedManagedStorageAccounts(string vaultName, string name)
138138
{
139139
var options = new KeyVaultObjectFilterOptions
140140
{
@@ -143,7 +143,7 @@ private void GetAndWriteDeletedManagedStorageAccounts(string vaultName)
143143
};
144144
do
145145
{
146-
WriteObject(DataServiceClient.GetDeletedManagedStorageAccounts(options), true);
146+
WriteObject(KVSubResourceWildcardFilter(name, DataServiceClient.GetDeletedManagedStorageAccounts(options)), true);
147147
} while (!string.IsNullOrEmpty(options.NextLink));
148148
}
149149
}

0 commit comments

Comments
 (0)