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']] | ||||
|         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): | ||||
|         if terms[0] == 'query': | ||||
|             result = self.query(*terms[1:]) | ||||
|         elif terms[0] == 'ip': | ||||
|             result = self.ip(*terms[1:]) | ||||
|         elif terms[0] == 'subnet_ipv4': | ||||
|             result = self.subnet_ipv4(*terms[1:]) | ||||
|         elif terms[0] == 'group': | ||||
|             query_id = self.base.search(f"ou=group,{self.base_dn}", ldap.SCOPE_SUBTREE, "objectClass=posixGroup") | ||||
|             result = self.base.result(query_id) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue