blob: a336c1975add0a9fadf3cd6ee234ef13d7f49af5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from functools import partial
from copy import deepcopy
from ansible import errors
def _recurse_pool_volumes(pool, prefix, volumes):
result = []
if prefix != '':
prefix = prefix + '/'
for name, volume in volumes.items():
entry = deepcopy(volume)
entry.pop('children', None)
entry['pool'] = pool
entry['name'] = prefix+name
result.append(entry)
if 'children' in volume:
result = result + _recurse_pool_volumes(pool, entry['name'], volume['children'])
return result
def zfs_volume_list(data):
try:
result = []
for pool, volumes in data.items():
result = result + _recurse_pool_volumes(pool, '', volumes)
return result
except Exception as e:
raise errors.AnsibleFilterError("zfs_volume_list(): %s" % str(e))
class FilterModule(object):
filter_map = {
'zfs_volume_list': zfs_volume_list,
}
def filters(self):
return self.filter_map
|