Merge branch 'ldap' into 'newinfra'
[ldap] Add function to list used ipv4 on a subnet See merge request nounous/ansible!54certbot_on_virtu
commit
6ad08d9930
|
@ -52,11 +52,28 @@ class LookupModule(LookupBase):
|
||||||
result = [res.decode('utf-8') for res in result['ipHostNumber']]
|
result = [res.decode('utf-8') for res in result['ipHostNumber']]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def subnet_ipv4(self, subnet):
|
||||||
|
"""
|
||||||
|
Retrive used IP addresses on a subnet
|
||||||
|
query('ldap', 'subnet_ipv4', SUBNET)
|
||||||
|
"""
|
||||||
|
network_query_id = self.base.search(f"cn={subnet},ou=networks,{self.base_dn}", ldap.SCOPE_BASE)
|
||||||
|
network_result = self.base.result(network_query_id)
|
||||||
|
network = network_result[1][0][1]
|
||||||
|
network, hostmask = network['ipNetworkNumber'][0].decode('utf-8'), network['ipNetmaskNumber'][0].decode('utf-8')
|
||||||
|
subnet = ipaddress.IPv4Network(f"{network}/{hostmask}")
|
||||||
|
query_id = self.base.search(f"ou=hosts,{self.base_dn}", ldap.SCOPE_SUBTREE, "objectClass=ipHost")
|
||||||
|
result = self.base.result(query_id)
|
||||||
|
result = [ip.decode('utf-8') for dn, entry in result[1] for ip in entry['ipHostNumber'] if ipaddress.ip_address(ip.decode('utf-8')) in subnet]
|
||||||
|
return result
|
||||||
|
|
||||||
def run(self, terms, variables=None, **kwargs):
|
def run(self, terms, variables=None, **kwargs):
|
||||||
if terms[0] == 'query':
|
if terms[0] == 'query':
|
||||||
result = self.query(*terms[1:])
|
result = self.query(*terms[1:])
|
||||||
elif terms[0] == 'ip':
|
elif terms[0] == 'ip':
|
||||||
result = self.ip(*terms[1:])
|
result = self.ip(*terms[1:])
|
||||||
|
elif terms[0] == 'subnet_ipv4':
|
||||||
|
result = self.subnet_ipv4(*terms[1:])
|
||||||
elif terms[0] == 'group':
|
elif terms[0] == 'group':
|
||||||
query_id = self.base.search(f"ou=group,{self.base_dn}", ldap.SCOPE_SUBTREE, "objectClass=posixGroup")
|
query_id = self.base.search(f"ou=group,{self.base_dn}", ldap.SCOPE_SUBTREE, "objectClass=posixGroup")
|
||||||
result = self.base.result(query_id)
|
result = self.base.result(query_id)
|
||||||
|
|
Loading…
Reference in New Issue