fix cross subs vnet peering (#55854)
parent
ae7b6739ce
commit
fd2ea34444
|
@ -108,6 +108,7 @@ id:
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from msrestazure.azure_exceptions import CloudError
|
from msrestazure.azure_exceptions import CloudError
|
||||||
|
from msrestazure.tools import is_valid_resource_id
|
||||||
from msrest.polling import LROPoller
|
from msrest.polling import LROPoller
|
||||||
except ImportError:
|
except ImportError:
|
||||||
# This is handled in azure_rm_common
|
# 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')
|
self.fail('Resource group of virtual_network is not same as param resource_group')
|
||||||
|
|
||||||
# parse remote virtual_network
|
# 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
|
# get vnet peering
|
||||||
response = self.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!")
|
self.fail("Cannot update virtual_network of Virtual Network Peering!")
|
||||||
|
|
||||||
# check remote vnet id not changed
|
# check remote vnet id not changed
|
||||||
exisiting_remote_vnet = self.parse_resource_to_dict(response['remote_virtual_network'])
|
if response['remote_virtual_network'].lower() != self.remote_virtual_network.lower():
|
||||||
if exisiting_remote_vnet['resource_group'] != self.remote_virtual_network['resource_group'] or \
|
|
||||||
exisiting_remote_vnet['name'] != self.remote_virtual_network['name']:
|
|
||||||
self.fail("Cannot update remote_virtual_network of Virtual Network Peering!")
|
self.fail("Cannot update remote_virtual_network of Virtual Network Peering!")
|
||||||
|
|
||||||
# check if update
|
# check if update
|
||||||
|
@ -266,12 +265,6 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
||||||
self.fail("Virtual network {0} in resource group {1} does not exist!".format(
|
self.fail("Virtual network {0} in resource group {1} does not exist!".format(
|
||||||
self.virtual_network['name'], self.virtual_network['resource_group']))
|
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':
|
elif self.state == 'absent':
|
||||||
if response:
|
if response:
|
||||||
self.log('Delete Azure Virtual Network Peering')
|
self.log('Delete Azure Virtual Network Peering')
|
||||||
|
@ -297,6 +290,28 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
||||||
|
|
||||||
return self.results
|
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):
|
def check_update(self, exisiting_vnet_peering):
|
||||||
if self.allow_forwarded_traffic != exisiting_vnet_peering['allow_forwarded_traffic']:
|
if self.allow_forwarded_traffic != exisiting_vnet_peering['allow_forwarded_traffic']:
|
||||||
return True
|
return True
|
||||||
|
@ -334,15 +349,10 @@ class AzureRMVirtualNetworkPeering(AzureRMModuleBase):
|
||||||
'Microsoft.Network',
|
'Microsoft.Network',
|
||||||
'virtualNetworks',
|
'virtualNetworks',
|
||||||
self.virtual_network['resource_group'])
|
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(
|
peering = self.network_models.VirtualNetworkPeering(
|
||||||
id=vnet_id,
|
id=vnet_id,
|
||||||
name=self.name,
|
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_virtual_network_access=self.allow_virtual_network_access,
|
||||||
allow_gateway_transit=self.allow_gateway_transit,
|
allow_gateway_transit=self.allow_gateway_transit,
|
||||||
allow_forwarded_traffic=self.allow_forwarded_traffic,
|
allow_forwarded_traffic=self.allow_forwarded_traffic,
|
||||||
|
|
Loading…
Reference in New Issue