Skip to content

Commit d5a77c9

Browse files
authored
Merge pull request Azure#11237 from nagula-ritvika/rinagula/FixBugInHubVnetConn
Pass auth headers for virtualHubVnetConnection support across different tenants
2 parents cc0f96f + 7afc401 commit d5a77c9

File tree

6 files changed

+73
-7
lines changed

6 files changed

+73
-7
lines changed

src/Network/Network/ChangeLog.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@
1919
--->
2020

2121
## Upcoming Release
22+
* Updated cmdlets to allow cross-tenant VirtualHubVnetConnections
23+
- New-AzVirtualHubVnetConnection
24+
- Update-AzVirtualHubVnetConnection
25+
- New-AzVirtualHub
26+
- Update-AzVirtualHub
2227

2328
## Version 2.3.2
2429
* Updated Sql Management SDK.

src/Network/Network/Cortex/HubVnetConnection/NewAzureRmHubVirtualNetworkConnectionCommand.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ public class NewHubVirtualNetworkConnectionCommand : HubVnetConnectionBaseCmdlet
137137
public override void Execute()
138138
{
139139
base.Execute();
140-
140+
Dictionary<string, List<string>> auxAuthHeader = null;
141+
141142
if (ParameterSetName.Contains(CortexParameterSetNames.ByVirtualHubObject))
142143
{
143144
this.ResourceGroupName = this.ParentObject.ResourceGroupName;
@@ -182,6 +183,14 @@ public override void Execute()
182183
parentVirtualHub.VirtualNetworkConnections = new List<PSHubVirtualNetworkConnection>();
183184
}
184185

186+
List<string> resourceIds = new List<string>();
187+
resourceIds.Add(hubVnetConnection.RemoteVirtualNetwork.Id);
188+
var auxHeaderDictionary = GetAuxilaryAuthHeaderFromResourceIds(resourceIds);
189+
if (auxHeaderDictionary != null && auxHeaderDictionary.Count > 0)
190+
{
191+
auxAuthHeader = new Dictionary<string, List<string>>(auxHeaderDictionary);
192+
}
193+
185194
parentVirtualHub.VirtualNetworkConnections.Add(hubVnetConnection);
186195

187196
ConfirmAction(
@@ -190,7 +199,7 @@ public override void Execute()
190199
() =>
191200
{
192201
WriteVerbose(String.Format(Properties.Resources.CreatingLongRunningOperationMessage, this.ResourceGroupName, this.Name));
193-
this.CreateOrUpdateVirtualHub(this.ResourceGroupName, this.ParentResourceName, parentVirtualHub, parentVirtualHub.Tag);
202+
this.CreateOrUpdateVirtualHub(this.ResourceGroupName, this.ParentResourceName, parentVirtualHub, parentVirtualHub.Tag, auxAuthHeader);
194203
var createdVirtualHub = this.GetVirtualHub(this.ResourceGroupName, this.ParentResourceName);
195204

196205
WriteObject(createdVirtualHub.VirtualNetworkConnections.FirstOrDefault(hubConnection => hubConnection.Name.Equals(this.Name, StringComparison.OrdinalIgnoreCase)));

src/Network/Network/Cortex/HubVnetConnection/UpdateAzureRmHubVirtualNetworkConnectionCommand.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public class UpdateAzureRmHubVirtualNetworkConnectionCommand : HubVnetConnection
8989
public override void Execute()
9090
{
9191
base.Execute();
92+
Dictionary<string, List<string>> auxAuthHeader = null;
9293

9394
//// Resolve the VirtualHub
9495
if (ParameterSetName.Equals(CortexParameterSetNames.ByHubVirtualNetworkConnectionObject, StringComparison.OrdinalIgnoreCase))
@@ -127,12 +128,20 @@ public override void Execute()
127128
connectionToModify.EnableInternetSecurity = this.EnableInternetSecurity.Value;
128129
}
129130

131+
List<string> resourceIds = new List<string>();
132+
resourceIds.Add(connectionToModify.RemoteVirtualNetwork.Id);
133+
var auxHeaderDictionary = GetAuxilaryAuthHeaderFromResourceIds(resourceIds);
134+
if (auxHeaderDictionary != null && auxHeaderDictionary.Count > 0)
135+
{
136+
auxAuthHeader = new Dictionary<string, List<string>>(auxHeaderDictionary);
137+
}
138+
130139
ConfirmAction(
131140
Properties.Resources.SettingResourceMessage,
132141
this.Name,
133142
() =>
134143
{
135-
this.CreateOrUpdateVirtualHub(this.ResourceGroupName, this.ParentResourceName, parentVirtualHub, parentVirtualHub.Tag);
144+
this.CreateOrUpdateVirtualHub(this.ResourceGroupName, this.ParentResourceName, parentVirtualHub, parentVirtualHub.Tag, auxAuthHeader);
136145
var updatedVirtualHub = this.GetVirtualHub(this.ResourceGroupName, this.ParentResourceName);
137146

138147
WriteObject(updatedVirtualHub.VirtualNetworkConnections.FirstOrDefault(hubConnection => hubConnection.Name.Equals(this.Name, StringComparison.OrdinalIgnoreCase)));

src/Network/Network/Cortex/VirtualHub/NewAzureRmVirtualHubCommand.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public class NewAzureRmVirtualHubCommand : VirtualHubBaseCmdlet
107107
public override void Execute()
108108
{
109109
base.Execute();
110+
Dictionary<string, List<string>> auxAuthHeader = null;
110111

111112
if (this.IsVirtualHubPresent(this.ResourceGroupName, this.Name))
112113
{
@@ -155,6 +156,19 @@ public override void Execute()
155156
if (this.HubVnetConnection != null)
156157
{
157158
virtualHub.VirtualNetworkConnections.AddRange(this.HubVnetConnection);
159+
160+
// get auth headers for cross-tenant hubvnet conn
161+
List<string> resourceIds = new List<string>();
162+
foreach (var connection in this.HubVnetConnection)
163+
{
164+
resourceIds.Add(connection.RemoteVirtualNetwork.Id);
165+
}
166+
167+
var auxHeaderDictionary = GetAuxilaryAuthHeaderFromResourceIds(resourceIds);
168+
if (auxHeaderDictionary != null && auxHeaderDictionary.Count > 0)
169+
{
170+
auxAuthHeader = new Dictionary<string, List<string>>(auxHeaderDictionary);
171+
}
158172
}
159173

160174
virtualHub.RouteTable = this.RouteTable;
@@ -169,7 +183,8 @@ public override void Execute()
169183
this.ResourceGroupName,
170184
this.Name,
171185
virtualHub,
172-
this.Tag));
186+
this.Tag,
187+
auxAuthHeader));
173188
});
174189
}
175190
}

src/Network/Network/Cortex/VirtualHub/UpdateAzureRmVirtualHubCommand.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public override void Execute()
107107
{
108108
base.Execute();
109109
PSVirtualHub virtualHubToUpdate = null;
110+
Dictionary<string, List<string>> auxAuthHeader = null;
110111

111112
if (ParameterSetName.Equals(CortexParameterSetNames.ByVirtualHubObject, StringComparison.OrdinalIgnoreCase))
112113
{
@@ -142,6 +143,19 @@ public override void Execute()
142143
{
143144
virtualHubToUpdate.VirtualNetworkConnections = new List<PSHubVirtualNetworkConnection>();
144145
virtualHubToUpdate.VirtualNetworkConnections.AddRange(this.HubVnetConnection);
146+
147+
// get auth headers for cross-tenant hubvnet conn
148+
List<string> resourceIds = new List<string>();
149+
foreach (var connection in this.HubVnetConnection)
150+
{
151+
resourceIds.Add(connection.RemoteVirtualNetwork.Id);
152+
}
153+
154+
var auxHeaderDictionary = GetAuxilaryAuthHeaderFromResourceIds(resourceIds);
155+
if (auxHeaderDictionary != null && auxHeaderDictionary.Count > 0)
156+
{
157+
auxAuthHeader = new Dictionary<string, List<string>>(auxHeaderDictionary);
158+
}
145159
}
146160

147161
//// VirtualHubRouteTable
@@ -166,7 +180,8 @@ public override void Execute()
166180
this.ResourceGroupName,
167181
this.Name,
168182
virtualHubToUpdate,
169-
this.Tag));
183+
this.Tag,
184+
auxAuthHeader));
170185
});
171186
}
172187
}

src/Network/Network/Cortex/VirtualHub/VirtualHubBaseCmdlet.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,26 @@ public bool IsVirtualHubPresent(string resourceGroupName, string name)
7171
return psVirtualHub == null ? false : true;
7272
}
7373

74-
public PSVirtualHub CreateOrUpdateVirtualHub(string resourceGroupName, string virtualHubName, PSVirtualHub virtualHub, Hashtable tags)
74+
public PSVirtualHub CreateOrUpdateVirtualHub(string resourceGroupName, string virtualHubName, PSVirtualHub virtualHub, Hashtable tags, Dictionary<string, List<string>> customHeaders = null)
7575
{
7676
var virtualHubModel = NetworkResourceManagerProfile.Mapper.Map<MNM.VirtualHub>(virtualHub);
7777
virtualHubModel.Location = virtualHub.Location;
7878
virtualHubModel.Tags = TagsConversionHelper.CreateTagDictionary(tags, validate: true);
79+
MNM.VirtualHub virtualHubCreatedOrUpdated;
80+
81+
if (customHeaders == null)
82+
{
83+
virtualHubCreatedOrUpdated = this.VirtualHubClient.CreateOrUpdate(resourceGroupName, virtualHubName, virtualHubModel);
84+
}
85+
else
86+
{
87+
// Execute the create call and pass the custom headers.
88+
using (var _result = this.VirtualHubClient.CreateOrUpdateWithHttpMessagesAsync(resourceGroupName, virtualHubName, virtualHubModel, customHeaders).GetAwaiter().GetResult())
89+
{
90+
virtualHubCreatedOrUpdated = _result.Body;
91+
}
92+
}
7993

80-
var virtualHubCreatedOrUpdated = this.VirtualHubClient.CreateOrUpdate(resourceGroupName, virtualHubName, virtualHubModel);
8194
PSVirtualHub hubToReturn = this.ToPsVirtualHub(virtualHubCreatedOrUpdated);
8295
hubToReturn.ResourceGroupName = resourceGroupName;
8396

0 commit comments

Comments
 (0)