[re2o_lookup] Get ipv6 prefix and ipv4 cidrs from subnet_names.
parent
aed4b4fadf
commit
011e743635
|
@ -524,6 +524,26 @@ class LookupModule(LookupBase):
|
|||
except IndexError:
|
||||
display.v("Error in re2oapi : No role_name provided")
|
||||
raise AnsibleError("role_name not found in arguments.")
|
||||
elif term == 'prefixv6':
|
||||
prefixes = []
|
||||
while dterms:
|
||||
subnet_name = dterms.popleft()
|
||||
prefixes.append(self._get_prefix(api_client, subnet_name))
|
||||
if prefixes:
|
||||
res.extend(prefixes)
|
||||
else:
|
||||
display.v("Error in re2oapi : No subnet_name provided")
|
||||
raise AnsibleError("subnet_name not found in arguments.")
|
||||
elif term == 'cidrs':
|
||||
cidrs = []
|
||||
while dterms:
|
||||
subnet_name = dterms.popleft()
|
||||
cidrs.append(self._get_cidrs(api_client, subnet_name))
|
||||
if cidrs:
|
||||
res.extend(cidrs)
|
||||
else:
|
||||
display.v("Error in re2oapi : No subnet_name provided")
|
||||
raise AnsibleError("subnet_name not found in arguments.")
|
||||
else:
|
||||
try:
|
||||
res.append(self._rawquery(api_client, term))
|
||||
|
@ -688,3 +708,31 @@ class LookupModule(LookupBase):
|
|||
|
||||
display.vvv('\n')
|
||||
return res
|
||||
|
||||
def _get_prefix(self, api_client, subnet_name):
|
||||
prefixv6 = None
|
||||
if self._is_cached(subnet_name):
|
||||
display.vvv("Found subnet {} in cache.".format(subnet_name))
|
||||
prefixv6 = self._get_cache(subnet_name)
|
||||
else:
|
||||
Mtypes = self._rawquery(api_client, 'machines/iptype')
|
||||
iptype = list(filter(lambda x: x['type'] == subnet_name, Mtypes))
|
||||
prefixv6 = iptype[0]['prefix_v6'] + '/64'
|
||||
display.vvv("Storing subnet {} in cache".format(subnet_name))
|
||||
self._set_cache(subnet_name, prefixv6)
|
||||
return prefixv6
|
||||
|
||||
def _get_cidrs(self, api_client, subnet_name):
|
||||
cidrs = None
|
||||
if self._is_cached(subnet_name):
|
||||
display.vvv("Found subnet {} in cache.".format(subnet_name))
|
||||
cidrs = self._get_cache(subnet_name)
|
||||
else:
|
||||
Mtypes = self._rawquery(api_client, 'machines/iptype')
|
||||
iptype = list(filter(lambda x: x['type'] == subnet_name, Mtypes))[0]
|
||||
ips = iptype['domaine_ip_start']
|
||||
ipe = iptype['domaine_ip_stop']
|
||||
cidrs = str(netaddr.iprange_to_cidrs(ips, ipe)[0])
|
||||
display.vvv("Storing subnet {} in cache".format(subnet_name))
|
||||
self._set_cache(subnet_name, cidrs)
|
||||
return cidrs
|
||||
|
|
Loading…
Reference in New Issue