mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-08-22 22:11:44 -07:00
Add route table and route module (#41175)
* add route module * add test * add table * add route table * fix dict * fix * fix * route table accept no name * add default * fix * fix * fix * fix pep * support route table * fix line ending * fix pep * fix * fix * set the default to 'None' * make return value only id * camel and snake * set test alias * change facts line ending * change test * fix * add default * fix * fix line break * remove unsafe args * fix comment * fix
This commit is contained in:
parent
6da6652e6b
commit
fff5fb2077
8 changed files with 853 additions and 2 deletions
|
@ -61,6 +61,13 @@ options:
|
|||
required: true
|
||||
aliases:
|
||||
- virtual_network
|
||||
route_table:
|
||||
description:
|
||||
- The reference of the RouteTable resource.
|
||||
- It can accept both a str or a dict.
|
||||
- The str can be the name or resource id of the route table.
|
||||
- The dict can contains C(name) and C(resource_group) of the route_table.
|
||||
version_added: "2.7"
|
||||
|
||||
extends_documentation_fragment:
|
||||
- azure
|
||||
|
@ -89,6 +96,7 @@ EXAMPLES = '''
|
|||
security_group:
|
||||
name: secgroupfoo
|
||||
resource_group: Testing1
|
||||
route_table: route
|
||||
|
||||
- name: Delete a subnet
|
||||
azure_rm_subnet:
|
||||
|
@ -149,11 +157,18 @@ def subnet_to_dict(subnet):
|
|||
provisioning_state=subnet.provisioning_state,
|
||||
address_prefix=subnet.address_prefix,
|
||||
network_security_group=dict(),
|
||||
route_table=dict()
|
||||
)
|
||||
if subnet.network_security_group:
|
||||
id_keys = azure_id_to_dict(subnet.network_security_group.id)
|
||||
result['network_security_group']['id'] = subnet.network_security_group.id
|
||||
result['network_security_group']['name'] = id_keys['networkSecurityGroups']
|
||||
result['network_security_group']['resource_group'] = id_keys['resourceGroups']
|
||||
if subnet.route_table:
|
||||
id_keys = azure_id_to_dict(subnet.route_table.id)
|
||||
result['route_table']['id'] = subnet.route_table.id
|
||||
result['route_table']['name'] = id_keys['routeTables']
|
||||
result['route_table']['resource_group'] = id_keys['resourceGroups']
|
||||
return result
|
||||
|
||||
|
||||
|
@ -167,7 +182,8 @@ class AzureRMSubnet(AzureRMModuleBase):
|
|||
state=dict(type='str', default='present', choices=['present', 'absent']),
|
||||
virtual_network_name=dict(type='str', required=True, aliases=['virtual_network']),
|
||||
address_prefix_cidr=dict(type='str', aliases=['address_prefix']),
|
||||
security_group=dict(type='raw', aliases=['security_group_name'])
|
||||
security_group=dict(type='raw', aliases=['security_group_name']),
|
||||
route_table=dict(type='raw')
|
||||
)
|
||||
|
||||
required_if = [
|
||||
|
@ -185,6 +201,7 @@ class AzureRMSubnet(AzureRMModuleBase):
|
|||
self.virtual_network_name = None
|
||||
self.address_prefix_cidr = None
|
||||
self.security_group = None
|
||||
self.route_table = None
|
||||
|
||||
super(AzureRMSubnet, self).__init__(self.module_arg_spec,
|
||||
supports_check_mode=True,
|
||||
|
@ -204,6 +221,14 @@ class AzureRMSubnet(AzureRMModuleBase):
|
|||
if self.security_group:
|
||||
nsg = self.parse_nsg()
|
||||
|
||||
if self.route_table:
|
||||
route_table = self.parse_resource_to_dict(self.route_table)
|
||||
self.route_table = format_resource_id(val=route_table['name'],
|
||||
subscription_id=route_table['subscription_id'],
|
||||
namespace='Microsoft.Network',
|
||||
types='routeTables',
|
||||
resource_group=route_table['resource_group'])
|
||||
|
||||
results = dict()
|
||||
changed = False
|
||||
|
||||
|
@ -228,6 +253,10 @@ class AzureRMSubnet(AzureRMModuleBase):
|
|||
changed = True
|
||||
results['network_security_group']['id'] = nsg.get('id')
|
||||
results['network_security_group']['name'] = nsg.get('name')
|
||||
if self.route_table != results['route_table'].get('id'):
|
||||
changed = True
|
||||
results['route_table']['id'] = self.route_table
|
||||
self.log("CHANGED: subnet {0} route_table to {1}".format(self.name, route_table['name']))
|
||||
elif self.state == 'absent':
|
||||
changed = True
|
||||
except CloudError:
|
||||
|
@ -249,7 +278,8 @@ class AzureRMSubnet(AzureRMModuleBase):
|
|||
)
|
||||
if nsg:
|
||||
subnet.network_security_group = self.network_models.NetworkSecurityGroup(id=nsg.get('id'))
|
||||
|
||||
if self.route_table:
|
||||
subnet.route_table = self.network_models.RouteTable(id=self.route_table)
|
||||
else:
|
||||
# update subnet
|
||||
self.log('Updating subnet {0}'.format(self.name))
|
||||
|
@ -258,6 +288,8 @@ class AzureRMSubnet(AzureRMModuleBase):
|
|||
)
|
||||
if results['network_security_group'].get('id'):
|
||||
subnet.network_security_group = self.network_models.NetworkSecurityGroup(results['network_security_group'].get('id'))
|
||||
if self.route_table:
|
||||
subnet.route_table = self.network_models.RouteTable(id=self.route_table)
|
||||
|
||||
self.results['state'] = self.create_or_update_subnet(subnet)
|
||||
elif self.state == 'absent' and changed:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue