vmware_host_firewall_manager: avoid ansible.netcommon dep (#67386)
We use `ansible.module_utils.compat.ipaddress()` just for trivial IP validations that are not critical. This module will be ship in the `ansible.netcommon` collection. If we continue this way, it means the futur `community.vmware` will carry this extra dependency for limited benefit. This commit introduce a new `is_ipaddress()` that provide similar feature.
This commit is contained in:
parent
3fce39d610
commit
68620ced7f
1 changed files with 15 additions and 4 deletions
|
@ -173,8 +173,19 @@ except ImportError:
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible.module_utils.vmware import vmware_argument_spec, PyVmomi
|
from ansible.module_utils.vmware import vmware_argument_spec, PyVmomi
|
||||||
from ansible.module_utils._text import to_native, to_text
|
from ansible.module_utils._text import to_native
|
||||||
from ansible.module_utils.compat import ipaddress
|
import socket
|
||||||
|
|
||||||
|
|
||||||
|
def is_ipaddress(value):
|
||||||
|
try:
|
||||||
|
socket.inet_aton(value)
|
||||||
|
except socket.error:
|
||||||
|
try:
|
||||||
|
socket.inet_pton(socket.AF_INET6, value)
|
||||||
|
except socket.error:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
class VmwareFirewallManager(PyVmomi):
|
class VmwareFirewallManager(PyVmomi):
|
||||||
|
@ -229,14 +240,14 @@ class VmwareFirewallManager(PyVmomi):
|
||||||
ip_networks = allowed_hosts.get('ip_network', [])
|
ip_networks = allowed_hosts.get('ip_network', [])
|
||||||
for ip_address in ip_addresses:
|
for ip_address in ip_addresses:
|
||||||
try:
|
try:
|
||||||
ipaddress.ip_address(to_text(ip_address))
|
is_ipaddress(ip_address)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
self.module.fail_json(msg="The provided IP address %s is not a valid IP"
|
self.module.fail_json(msg="The provided IP address %s is not a valid IP"
|
||||||
" for the rule %s" % (ip_address, rule_name))
|
" for the rule %s" % (ip_address, rule_name))
|
||||||
|
|
||||||
for ip_network in ip_networks:
|
for ip_network in ip_networks:
|
||||||
try:
|
try:
|
||||||
ipaddress.ip_network(ip_network)
|
is_ipaddress(ip_network)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
self.module.fail_json(msg="The provided IP network %s is not a valid network"
|
self.module.fail_json(msg="The provided IP network %s is not a valid network"
|
||||||
" for the rule %s" % (ip_network, rule_name))
|
" for the rule %s" % (ip_network, rule_name))
|
||||||
|
|
Loading…
Add table
Reference in a new issue