Backport/2.8/55854 (#55856)
* fix cross subs vnet peering (#55854)
(cherry picked from commit fd2ea34444
)
* cherry pick cross subs fix
This commit is contained in:
parent
5375c5866d
commit
019573b63d
2 changed files with 28 additions and 16 deletions
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- azure_rm_virtualnetworkpeering - fix cross subscriptions virtual network peering. (https://github.com/ansible/ansible/pull/55854)
|
|
@ -108,6 +108,7 @@ id:
|
|||
|
||||
try:
|
||||
from msrestazure.azure_exceptions import CloudError
|
||||
from msrestazure.tools import is_valid_resource_id
|
||||
from msrest.polling import LROPoller
|
||||
except ImportError:
|
||||
# This is handled in azure_rm_common
|
||||
|
@ -234,7 +235,7 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
|||
self.fail('Resource group of virtual_network is not same as param resource_group')
|
||||
|
||||
# parse remote virtual_network
|
||||
self.remote_virtual_network = self.parse_resource_to_dict(self.remote_virtual_network)
|
||||
self.remote_virtual_network = self.format_vnet_id(self.remote_virtual_network)
|
||||
|
||||
# get vnet peering
|
||||
response = self.get_vnet_peering()
|
||||
|
@ -248,9 +249,7 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
|||
self.fail("Cannot update virtual_network of Virtual Network Peering!")
|
||||
|
||||
# check remote vnet id not changed
|
||||
exisiting_remote_vnet = self.parse_resource_to_dict(response['remote_virtual_network'])
|
||||
if exisiting_remote_vnet['resource_group'] != self.remote_virtual_network['resource_group'] or \
|
||||
exisiting_remote_vnet['name'] != self.remote_virtual_network['name']:
|
||||
if response['remote_virtual_network'].lower() != self.remote_virtual_network.lower():
|
||||
self.fail("Cannot update remote_virtual_network of Virtual Network Peering!")
|
||||
|
||||
# check if update
|
||||
|
@ -266,12 +265,6 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
|||
self.fail("Virtual network {0} in resource group {1} does not exist!".format(
|
||||
self.virtual_network['name'], self.virtual_network['resource_group']))
|
||||
|
||||
# check if remote vnet exists
|
||||
remote_virtual_network = self.get_vnet(self.remote_virtual_network['resource_group'], self.remote_virtual_network['name'])
|
||||
if not remote_virtual_network:
|
||||
self.fail("Virtual network {0} in resource group {1} does not exist!".format(
|
||||
self.remote_virtual_network['name'], self.remote_virtual_network['resource_group']))
|
||||
|
||||
elif self.state == 'absent':
|
||||
if response:
|
||||
self.log('Delete Azure Virtual Network Peering')
|
||||
|
@ -297,6 +290,28 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
|||
|
||||
return self.results
|
||||
|
||||
def format_vnet_id(self, vnet):
|
||||
if not vnet:
|
||||
return vnet
|
||||
if isinstance(vnet, dict) and vnet.get('name') and vnet.get('resource_group'):
|
||||
remote_vnet_id = format_resource_id(vnet['name'],
|
||||
self.subscription_id,
|
||||
'Microsoft.Network',
|
||||
'virtualNetworks',
|
||||
vnet['resource_group'])
|
||||
elif isinstance(vnet, str):
|
||||
if is_valid_resource_id(vnet):
|
||||
remote_vnet_id = vnet
|
||||
else:
|
||||
remote_vnet_id = format_resource_id(vnet,
|
||||
self.subscription_id,
|
||||
'Microsoft.Network',
|
||||
'virtualNetworks',
|
||||
self.resource_group)
|
||||
else:
|
||||
self.fail("remote_virtual_network could be a valid resource id, dict of name and resource_group, name of virtual network in same resource group.")
|
||||
return remote_vnet_id
|
||||
|
||||
def check_update(self, exisiting_vnet_peering):
|
||||
if self.allow_forwarded_traffic != exisiting_vnet_peering['allow_forwarded_traffic']:
|
||||
return True
|
||||
|
@ -334,15 +349,10 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
|||
'Microsoft.Network',
|
||||
'virtualNetworks',
|
||||
self.virtual_network['resource_group'])
|
||||
remote_vnet_id = format_resource_id(self.remote_virtual_network['name'],
|
||||
self.subscription_id,
|
||||
'Microsoft.Network',
|
||||
'virtualNetworks',
|
||||
self.remote_virtual_network['resource_group'])
|
||||
peering = self.network_models.VirtualNetworkPeering(
|
||||
id=vnet_id,
|
||||
name=self.name,
|
||||
remote_virtual_network=self.network_models.SubResource(id=remote_vnet_id),
|
||||
remote_virtual_network=self.network_models.SubResource(id=self.remote_virtual_network),
|
||||
allow_virtual_network_access=self.allow_virtual_network_access,
|
||||
allow_gateway_transit=self.allow_gateway_transit,
|
||||
allow_forwarded_traffic=self.allow_forwarded_traffic,
|
||||
|
|
Loading…
Reference in a new issue