Skip to content

Commit 1c5d1df

Browse files
authored
Added support for getting a single private link resource (#14785)
* Added support for getting a single private link resource * update help file * Update src/Network/Network/help/Get-AzPrivateLinkResource.md * Update src/Network/Network/help/Get-AzPrivateLinkResource.md Co-authored-by: Beisi Zhou <[email protected]>
1 parent 58706f9 commit 1c5d1df

File tree

5 files changed

+86
-47
lines changed

5 files changed

+86
-47
lines changed

src/Network/Network/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
--->
2020

2121
## Upcoming Release
22+
* Added support for getting a single private link resource.
2223
* Added more detailed description about GroupId in `New-AzPrivateLinkServiceConnection`
2324
* Updated cmdlets to enable setting of PrivateRange on AzureFirewallPolicy.
2425
- `New-AzFirewallPolicy`

src/Network/Network/PrivateLinkService/PrivateLinkResource/GetAzurePrivateLinkResourceCommand.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ namespace Microsoft.Azure.Commands.Network
2525
[Cmdlet("Get", ResourceManager.Common.AzureRMConstants.AzureRMPrefix + "PrivateLinkResource", DefaultParameterSetName = "ByPrivateLinkResourceId"), OutputType(typeof(PSPrivateLinkResource))]
2626
public class GetAzurePrivateLinkResourceCommand : NetworkBaseCmdlet, IDynamicParameters
2727
{
28+
[Alias("PrivateLinkServiceId")]
2829
[Parameter(
2930
Mandatory = true,
3031
ParameterSetName = "ByPrivateLinkResourceId",
@@ -48,6 +49,12 @@ public class GetAzurePrivateLinkResourceCommand : NetworkBaseCmdlet, IDynamicPar
4849
[ValidateNotNullOrEmpty]
4950
public string ServiceName { get; set; }
5051

52+
[Alias("GroupName")]
53+
[Parameter(
54+
ValueFromPipelineByPropertyName = true,
55+
HelpMessage = "The private link resource name.")]
56+
public string Name { get; set; }
57+
5158
public string PrivateLinkResourceType { get; set; }
5259
string NamedContextParameterSet = "ByResource";
5360
private RuntimeDefinedParameterDictionary DynamicParameters;
@@ -87,10 +94,16 @@ public override void Execute()
8794
{
8895
throw new ArgumentException(string.Format(Properties.Resources.InvalidResourceId, this.PrivateLinkResourceId));
8996
}
90-
91-
var plrs = provider.ListPrivateLinkResource(ResourceGroupName, ServiceName);
92-
WriteObject(plrs, true);
93-
97+
if (this.IsParameterBound(c => c.Name))
98+
{
99+
var plr = provider.GetPrivateLinkResource(ResourceGroupName, ServiceName, Name);
100+
WriteObject(plr);
101+
}
102+
else
103+
{
104+
var plrs = provider.ListPrivateLinkResource(ResourceGroupName, ServiceName);
105+
WriteObject(plrs, true);
106+
}
94107
}
95108
}
96109
}

src/Network/Network/PrivateLinkService/PrivateLinkServiceProvider/GenericProvider.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
using Microsoft.Rest.Azure;
2020
using Microsoft.Azure.Internal.Common;
2121
using System.Collections.Generic;
22+
using System.Linq;
2223

2324
namespace Microsoft.Azure.Commands.Network.PrivateLinkService.PrivateLinkServiceProvider
2425
{
@@ -132,9 +133,16 @@ public void DeletePrivateEndpointConnection(string resourceGroupName, string ser
132133

133134
public PSPrivateLinkResource GetPrivateLinkResource(string resourceGroupName, string serviceName, string name)
134135
{
135-
string url = BuildPrivateLinkResourceURL(resourceGroupName, serviceName, name);
136-
PrivateLinkResource resource = ServiceClient.Operations.GetResource<PrivateLinkResource>(url, _configuration.ApiVersion);
137-
return ToPsPrivateLinkResource(resource);
136+
if (_configuration.HasResourceURI)
137+
{
138+
string url = BuildPrivateLinkResourceURL(resourceGroupName, serviceName, name);
139+
PrivateLinkResource resource = ServiceClient.Operations.GetResource<PrivateLinkResource>(url, _configuration.ApiVersion);
140+
return ToPsPrivateLinkResource(resource);
141+
}
142+
else
143+
{
144+
return ListPrivateLinkResource(resourceGroupName, serviceName).Single(plr => plr.Name.Equals(name));
145+
}
138146
}
139147

140148
public List<PSPrivateLinkResource> ListPrivateLinkResource(string resourceGroupName, string serviceName)

src/Network/Network/PrivateLinkService/PrivateLinkServiceProvider/ProviderConfiguration.cs

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -14,56 +14,58 @@ internal class ProviderConfiguration
1414

1515
static ProviderConfiguration()
1616
{
17-
RegisterConfiguration("Microsoft.Automation/automationAccounts", "2020-01-13-preview");
18-
RegisterConfiguration("Microsoft.AppConfiguration/configurationStores", "2020-06-01");
19-
RegisterConfiguration("Microsoft.Batch/batchAccounts", "2020-03-01");
20-
RegisterConfiguration("Microsoft.Cache/redisEnterprise", "2021-03-01");
21-
RegisterConfiguration("Microsoft.CognitiveServices/accounts", "2017-04-18");
22-
RegisterConfiguration("Microsoft.Compute/diskAccesses", "2020-09-30");
23-
RegisterConfiguration("Microsoft.ContainerRegistry/registries", "2019-12-01-preview");
24-
RegisterConfiguration("Microsoft.DBforMySQL/servers", "2018-06-01");
25-
RegisterConfiguration("Microsoft.DBforMariaDB/servers", "2018-06-01");
26-
RegisterConfiguration("Microsoft.DBforPostgreSQL/servers", "2018-06-01");
27-
RegisterConfiguration("Microsoft.Devices/IotHubs", "2020-03-01");
28-
RegisterConfiguration("Microsoft.DocumentDB/databaseAccounts", "2019-08-01-preview");
29-
RegisterConfiguration("Microsoft.DigitalTwins/digitalTwinsInstances", "2020-12-01");
30-
RegisterConfiguration("Microsoft.EventGrid/topics", "2020-04-01-preview");
31-
RegisterConfiguration("Microsoft.EventGrid/domains", "2020-04-01-preview");
32-
RegisterConfiguration("Microsoft.EventHub/namespaces", "2018-01-01-preview");
33-
RegisterConfiguration("Microsoft.HealthcareApis/services", "2020-03-30", false);
34-
RegisterConfiguration("Microsoft.Insights/privateLinkScopes", "2019-10-17-preview");
35-
RegisterConfiguration("Microsoft.KeyVault/vaults", "2018-02-14", false);
36-
RegisterConfiguration("Microsoft.Media/mediaservices", "2020-05-01");
37-
RegisterConfiguration("Microsoft.Migrate/assessmentProjects", "2020-05-01-preview", false);
38-
RegisterConfiguration("Microsoft.Migrate/migrateProjects", "2020-06-01-preview", false);
39-
RegisterConfiguration("Microsoft.Network/applicationgateways", "2020-05-01");
40-
RegisterConfiguration("Microsoft.OffAzure/masterSites", "2020-07-07", false);
41-
RegisterConfiguration("Microsoft.Purview/accounts", "2020-12-01-preview");
42-
RegisterConfiguration("Microsoft.Search/searchServices", "2020-08-01");
43-
RegisterConfiguration("Microsoft.ServiceBus/namespaces", "2018-01-01-preview");
44-
RegisterConfiguration("Microsoft.SignalRService/signalr", "2020-05-01", false);
45-
RegisterConfiguration("Microsoft.Sql/servers", "2018-06-01-preview");
46-
RegisterConfiguration("Microsoft.Storage/storageAccounts", "2019-06-01", false);
47-
RegisterConfiguration("Microsoft.StorageSync/storageSyncServices", "2020-03-01");
48-
RegisterConfiguration("Microsoft.Synapse/workspaces", "2019-06-01-preview");
49-
RegisterConfiguration("Microsoft.Web/sites", "2019-08-01");
50-
RegisterConfiguration("Microsoft.Web/hostingEnvironments", "2020-10-01");
17+
RegisterConfiguration("Microsoft.AppConfiguration/configurationStores", "2020-06-01", true, true);
18+
RegisterConfiguration("Microsoft.Automation/automationAccounts", "2020-01-13-preview", true, false);
19+
RegisterConfiguration("Microsoft.Batch/batchAccounts", "2020-03-01", true, true);
20+
RegisterConfiguration("Microsoft.Cache/redisEnterprise", "2021-03-01", true, false);
21+
RegisterConfiguration("Microsoft.CognitiveServices/accounts", "2017-04-18", true, false);
22+
RegisterConfiguration("Microsoft.Compute/diskAccesses", "2020-09-30", true, false);
23+
RegisterConfiguration("Microsoft.ContainerRegistry/registries", "2019-12-01-preview", true, false);
24+
RegisterConfiguration("Microsoft.DBforMariaDB/servers", "2018-06-01", true, true);
25+
RegisterConfiguration("Microsoft.DBforMySQL/servers", "2018-06-01", true, true);
26+
RegisterConfiguration("Microsoft.DBforPostgreSQL/servers", "2018-06-01", true, true);
27+
RegisterConfiguration("Microsoft.Devices/IotHubs", "2020-03-01", true, true);
28+
RegisterConfiguration("Microsoft.DigitalTwins/digitalTwinsInstances", "2020-12-01", true, true);
29+
RegisterConfiguration("Microsoft.DocumentDB/databaseAccounts", "2019-08-01-preview", true, true);
30+
RegisterConfiguration("Microsoft.EventGrid/topics", "2020-04-01-preview", true, true);
31+
RegisterConfiguration("Microsoft.EventGrid/domains", "2020-04-01-preview", true, true);
32+
RegisterConfiguration("Microsoft.EventHub/namespaces", "2018-01-01-preview", true, false);
33+
RegisterConfiguration("Microsoft.HealthcareApis/services", "2020-03-30", false, true);
34+
RegisterConfiguration("Microsoft.Insights/privateLinkScopes", "2019-10-17-preview", true, true);
35+
RegisterConfiguration("Microsoft.KeyVault/vaults", "2018-02-14", false, false);
36+
RegisterConfiguration("Microsoft.Media/mediaservices", "2020-05-01", true, true);
37+
RegisterConfiguration("Microsoft.Migrate/assessmentProjects", "2020-05-01-preview", false, false);
38+
RegisterConfiguration("Microsoft.Migrate/migrateProjects", "2020-06-01-preview", false, false);
39+
RegisterConfiguration("Microsoft.Network/applicationgateways", "2020-05-01", true, false);
40+
RegisterConfiguration("Microsoft.OffAzure/masterSites", "2020-07-07", false, false);
41+
RegisterConfiguration("Microsoft.Purview/accounts", "2020-12-01-preview", true, true);
42+
RegisterConfiguration("Microsoft.Search/searchServices", "2020-08-01", true, false);
43+
RegisterConfiguration("Microsoft.ServiceBus/namespaces", "2018-01-01-preview", true, false);
44+
RegisterConfiguration("Microsoft.SignalRService/signalr", "2020-05-01", false, false);
45+
RegisterConfiguration("Microsoft.Sql/servers", "2018-06-01-preview", true, true);
46+
RegisterConfiguration("Microsoft.Storage/storageAccounts", "2019-06-01", false, false);
47+
RegisterConfiguration("Microsoft.StorageSync/storageSyncServices", "2020-03-01", true, false);
48+
RegisterConfiguration("Microsoft.Synapse/workspaces", "2019-06-01-preview", true, true);
49+
RegisterConfiguration("Microsoft.Web/sites", "2019-08-01", true, false);
50+
RegisterConfiguration("Microsoft.Web/hostingEnvironments", "2020-10-01", true, false);
5151
}
5252

53-
private static void RegisterConfiguration(string type, string apiVersion, bool hasConnectionsURI = true)
53+
private static void RegisterConfiguration(string type, string apiVersion, bool hasConnectionsURI = true, bool hasResourceURI = true)
5454
{
5555
ProviderConfiguration configuration = new ProviderConfiguration
5656
{
5757
Type = type,
5858
ApiVersion = apiVersion,
59-
HasConnectionsURI = hasConnectionsURI
59+
HasConnectionsURI = hasConnectionsURI,
60+
HasResourceURI = hasResourceURI
6061
};
6162
_configurations.Add(type, configuration);
6263
}
6364

6465
public string Type { get; set; }
6566
public string ApiVersion { get; set; }
6667
public bool HasConnectionsURI { get; set; }
68+
public bool HasResourceURI { get; set; }
6769

6870
public static ProviderConfiguration GetProviderConfiguration(string type)
6971
{

src/Network/Network/help/Get-AzPrivateLinkResource.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ Gets a private link resource.
1414

1515
### ByPrivateLinkResourceId (Default)
1616
```
17-
Get-AzPrivateLinkResource -PrivateLinkResourceId <String> [-DefaultProfile <IAzureContextContainer>]
18-
[<CommonParameters>]
17+
Get-AzPrivateLinkResource -PrivateLinkResourceId <String> [-Name <String>]
18+
[-DefaultProfile <IAzureContextContainer>] [<CommonParameters>]
1919
```
2020

2121
### ByResource
2222
```
23-
Get-AzPrivateLinkResource -ResourceGroupName <String> -ServiceName <String>
23+
Get-AzPrivateLinkResource -ResourceGroupName <String> -ServiceName <String> [-Name <String>]
2424
[-DefaultProfile <IAzureContextContainer>] [-PrivateLinkResourceType <String>] [<CommonParameters>]
2525
```
2626

@@ -53,13 +53,28 @@ Accept pipeline input: False
5353
Accept wildcard characters: False
5454
```
5555
56+
### -Name
57+
The private link resource name.
58+
59+
```yaml
60+
Type: System.String
61+
Parameter Sets: (All)
62+
Aliases: GroupName
63+
64+
Required: False
65+
Position: Named
66+
Default value: None
67+
Accept pipeline input: True (ByPropertyName)
68+
Accept wildcard characters: False
69+
```
70+
5671
### -PrivateLinkResourceId
5772
The Azure resource manager id of the private link resource.
5873
5974
```yaml
6075
Type: System.String
6176
Parameter Sets: ByPrivateLinkResourceId
62-
Aliases:
77+
Aliases: PrivateLinkServiceId
6378

6479
Required: True
6580
Position: Named

0 commit comments

Comments
 (0)