mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
ACI: Fix validate-module tests E322 and E323 (#35052)
This commit is contained in:
parent
29c1d5cb5d
commit
2fd5a99989
32 changed files with 44 additions and 38 deletions
|
@ -68,7 +68,6 @@ def aci_argument_spec():
|
|||
password=dict(type='str', no_log=True),
|
||||
private_key=dict(type='path', aliases=['cert_key']), # Beware, this is not the same as client_key !
|
||||
certificate_name=dict(type='str', aliases=['cert_name']), # Beware, this is not the same as client_cert !
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
timeout=dict(type='int', default=30),
|
||||
use_proxy=dict(type='bool', default=True),
|
||||
use_ssl=dict(type='bool', default=True),
|
||||
|
|
|
@ -102,6 +102,7 @@ def main():
|
|||
description=dict(type='str', aliases=['descr'], required=False),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -237,9 +237,10 @@ def main():
|
|||
tenant=dict(type='str', aliases=['tenant_name']),
|
||||
vrf=dict(type='str', aliases=['vrf_name']),
|
||||
gateway_ip=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
scope=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4
|
||||
subnet_mask=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -231,6 +231,7 @@ def main():
|
|||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
tenant=dict(type='str', aliases=['tenant_name']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -63,7 +63,8 @@ def main():
|
|||
l3out=dict(type='str'),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
tenant=dict(type='str', aliases=['tenant_name']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6') # Deprecated starting from v2.6
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -102,6 +102,7 @@ def main():
|
|||
aliases=['target']), # No default provided on purpose
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -149,9 +149,10 @@ def main():
|
|||
consumer_match=dict(type='str', choices=['all', 'at_least_one', 'at_most_one', 'none']),
|
||||
provider_match=dict(type='str', choices=['all', 'at_least_one', 'at_most_one', 'none']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
directive=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4
|
||||
filter=dict(type='str', aliases=['filter_name'], removed_in_version='2.4'), # Deprecated starting from v2.4
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -91,6 +91,7 @@ def main():
|
|||
tenant=dict(type='str', aliases=['tenant_name']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -26,12 +26,6 @@ notes:
|
|||
- The C(domain) and C(encap_pool) parameters should exist before using this module.
|
||||
The M(aci_domain) and M(aci_encap_pool) can be used for these.
|
||||
options:
|
||||
allocation_mode:
|
||||
description:
|
||||
- The method used for allocating encaps to resources.
|
||||
- Only vlan and vsan support allocation modes.
|
||||
choices: [ dynamic, static]
|
||||
aliases: [ mode ]
|
||||
domain:
|
||||
description:
|
||||
- Name of the domain being associated with the Encap Pool.
|
||||
|
@ -44,6 +38,12 @@ options:
|
|||
description:
|
||||
- The name of the pool.
|
||||
aliases: [ pool_name ]
|
||||
pool_allocation_mode:
|
||||
description:
|
||||
- The method used for allocating encaps to resources.
|
||||
- Only vlan and vsan support allocation modes.
|
||||
choices: [ dynamic, static]
|
||||
aliases: [ allocation_mode, mode ]
|
||||
pool_type:
|
||||
description:
|
||||
- The encap type of C(pool).
|
||||
|
|
|
@ -26,12 +26,6 @@ notes:
|
|||
- The C(domain) and C(vlan_pool) parameters should exist before using this module.
|
||||
The M(aci_domain) and M(aci_vlan_pool) can be used for these.
|
||||
options:
|
||||
allocation_mode:
|
||||
description:
|
||||
- The method used for allocating VLANs to resources.
|
||||
choices: [ dynamic, static]
|
||||
required: yes
|
||||
aliases: [ mode ]
|
||||
domain:
|
||||
description:
|
||||
- Name of the domain being associated with the VLAN Pool.
|
||||
|
@ -44,6 +38,12 @@ options:
|
|||
description:
|
||||
- The name of the pool.
|
||||
aliases: [ pool_name, vlan_pool ]
|
||||
pool_allocation_mode:
|
||||
description:
|
||||
- The method used for allocating VLANs to resources.
|
||||
choices: [ dynamic, static]
|
||||
required: yes
|
||||
aliases: [ allocation_mode, mode ]
|
||||
state:
|
||||
description:
|
||||
- Use C(present) or C(absent) for adding or removing.
|
||||
|
|
|
@ -171,6 +171,7 @@ def main():
|
|||
fwd_control=dict(type='str', choices=['none', 'proxy-arp']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -77,6 +77,7 @@ def main():
|
|||
description=dict(type='str', aliases=['descr']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -90,6 +90,7 @@ def main():
|
|||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
tenant=dict(type='str', aliases=['tenant_name']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -130,6 +130,7 @@ def main():
|
|||
tenant=dict(type='str', aliases=['tenant_name']),
|
||||
vm_provider=dict(type='str', choices=['microsoft', 'openstack', 'vmware']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -103,6 +103,7 @@ def main():
|
|||
description=dict(type='str', aliases=['descr']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -141,7 +141,7 @@ def main():
|
|||
argument_spec = aci_argument_spec()
|
||||
argument_spec.update(
|
||||
arp_flag=dict(type='str', choices=VALID_ARP_FLAGS),
|
||||
description=dict(type='str'),
|
||||
description=dict(type='str', aliases=['descr']),
|
||||
dst_port=dict(type='str'),
|
||||
dst_port_end=dict(type='str'),
|
||||
dst_port_start=dict(type='str'),
|
||||
|
|
|
@ -72,6 +72,7 @@ def main():
|
|||
port_mode=dict(type='str', choices=['f', 'np']), # No default provided on purpose
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -86,6 +86,7 @@ def main():
|
|||
vepa=dict(type='str', choices=['disabled', 'enabled']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -81,6 +81,7 @@ def main():
|
|||
transmit_state=dict(type='str', choices=['disabled', 'enabled']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -72,6 +72,7 @@ def main():
|
|||
admin_state=dict(type='str', choices=['disabled', 'enabled']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -134,6 +134,7 @@ def main():
|
|||
symmetric_hash=dict(type='bool'),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -71,6 +71,7 @@ def main():
|
|||
max_end_points=dict(type='int'),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -81,6 +81,7 @@ def main():
|
|||
tag=dict(type='int'),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -82,6 +82,7 @@ def main():
|
|||
description=dict(type='str', aliases=['descr']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -89,6 +89,7 @@ def main():
|
|||
description=dict(type='str', aliases=['descr']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -73,6 +73,7 @@ def main():
|
|||
description=dict(type='str', aliases=['descr']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -141,6 +141,7 @@ def main():
|
|||
move_frequency=dict(type='int'),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -75,6 +75,7 @@ def main():
|
|||
description=dict(type='str', aliases=['descr']),
|
||||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -84,6 +84,7 @@ def main():
|
|||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -76,6 +76,7 @@ def main():
|
|||
state=dict(type='str', default='present', choices=['absent', 'present', 'query']),
|
||||
tenant=dict(type='str', aliases=['tenant_name']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -104,12 +104,13 @@ def main():
|
|||
argument_spec = aci_argument_spec()
|
||||
argument_spec.update(
|
||||
description=dict(type='str', aliases=['descr']),
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
policy_control_direction=dict(choices=['ingress', 'egress'], type='str'),
|
||||
policy_control_preference=dict(choices=['enforced', 'unenforced'], type='str'),
|
||||
state=dict(choices=['absent', 'present', 'query'], type='str', default='present'),
|
||||
tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects
|
||||
vrf=dict(type='str', required=False, aliases=['context', 'name', 'vrf_name']), # Not required for querying all objects
|
||||
method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6
|
||||
protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6
|
||||
)
|
||||
|
||||
module = AnsibleModule(
|
||||
|
|
|
@ -269,33 +269,18 @@ lib/ansible/modules/net_tools/nmcli.py E323
|
|||
lib/ansible/modules/net_tools/omapi_host.py E317
|
||||
lib/ansible/modules/net_tools/omapi_host.py E322
|
||||
lib/ansible/modules/net_tools/snmp_facts.py E322
|
||||
lib/ansible/modules/network/aci/aci_aaa_user_certificate.py E322
|
||||
lib/ansible/modules/network/aci/aci_access_port_to_interface_policy_leaf_profile.py E322
|
||||
lib/ansible/modules/network/aci/aci_aep.py E322
|
||||
lib/ansible/modules/network/aci/aci_aep_to_domain.py E322
|
||||
lib/ansible/modules/network/aci/aci_ap.py E322
|
||||
lib/ansible/modules/network/aci/aci_bd.py E322
|
||||
lib/ansible/modules/network/aci/aci_bd_subnet.py E322
|
||||
lib/ansible/modules/network/aci/aci_bd_to_l3out.py E322
|
||||
lib/ansible/modules/network/aci/aci_config_rollback.py E322
|
||||
lib/ansible/modules/network/aci/aci_config_snapshot.py E322
|
||||
lib/ansible/modules/network/aci/aci_contract.py E322
|
||||
lib/ansible/modules/network/aci/aci_contract_subject.py E322
|
||||
lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py E322
|
||||
lib/ansible/modules/network/aci/aci_domain.py E322
|
||||
lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py E322
|
||||
lib/ansible/modules/network/aci/aci_domain_to_vlan_pool.py E322
|
||||
lib/ansible/modules/network/aci/aci_encap_pool.py E322
|
||||
lib/ansible/modules/network/aci/aci_encap_pool_range.py E322
|
||||
lib/ansible/modules/network/aci/aci_epg.py E322
|
||||
lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py E322
|
||||
lib/ansible/modules/network/aci/aci_epg_to_contract.py E322
|
||||
lib/ansible/modules/network/aci/aci_epg_to_domain.py E322
|
||||
lib/ansible/modules/network/aci/aci_filter.py E322
|
||||
lib/ansible/modules/network/aci/aci_filter_entry.py E322
|
||||
lib/ansible/modules/network/aci/aci_filter_entry.py E323
|
||||
lib/ansible/modules/network/aci/aci_interface_policy_leaf_profile.py E322
|
||||
lib/ansible/modules/network/aci/aci_interface_selector_to_switch_policy_leaf_profile.py E322
|
||||
lib/ansible/modules/network/aci/aci_intf_policy_fc.py E322
|
||||
lib/ansible/modules/network/aci/aci_intf_policy_l2.py E322
|
||||
lib/ansible/modules/network/aci/aci_intf_policy_lldp.py E322
|
||||
|
@ -303,9 +288,6 @@ lib/ansible/modules/network/aci/aci_intf_policy_mcp.py E322
|
|||
lib/ansible/modules/network/aci/aci_intf_policy_port_channel.py E322
|
||||
lib/ansible/modules/network/aci/aci_intf_policy_port_security.py E322
|
||||
lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py E322
|
||||
lib/ansible/modules/network/aci/aci_rest.py E322
|
||||
lib/ansible/modules/network/aci/aci_switch_leaf_selector.py E322
|
||||
lib/ansible/modules/network/aci/aci_switch_policy_leaf_profile.py E322
|
||||
lib/ansible/modules/network/aci/aci_taboo_contract.py E322
|
||||
lib/ansible/modules/network/aci/aci_tenant.py E322
|
||||
lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py E322
|
||||
|
@ -313,8 +295,6 @@ lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py E322
|
|||
lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py E322
|
||||
lib/ansible/modules/network/aci/aci_tenant_span_src_group.py E322
|
||||
lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py E322
|
||||
lib/ansible/modules/network/aci/aci_vlan_pool.py E322
|
||||
lib/ansible/modules/network/aci/aci_vlan_pool_encap_block.py E322
|
||||
lib/ansible/modules/network/aci/aci_vrf.py E322
|
||||
lib/ansible/modules/network/cloudengine/ce_aaa_server.py E322
|
||||
lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py E322
|
||||
|
|
Loading…
Reference in a new issue