fixes
[ncclient] / ncclient / operations / util.py
1 #!/usr/bin/env python
2
3 'Boilerplate'
4
5 from ncclient import OperationError
6
7 from . import MissingCapabilityError
8
9 def one_of(self, *args):
10     for i, arg in enumerate(args):
11         if arg is not None:
12             for argh in args[i+1:]:
13                 if argh is not None:
14                     raise OperationError('Too many parameters')
15             else:
16                 return
17     raise OperationError('Insufficient parameters')
18
19
20 def assert_capability(key, capabilities):
21     if key not in capabilities:
22         raise MissingCapabilityError('[%s] capability is required for this operation' % key)
23
24
25 def store_or_url(store, url):
26     one_of(store, url)
27     node = {}
28     if store is not None:
29         node['tag'] = store
30     else:
31         node['tag'] = 'url'
32         node['text'] = url
33     return node
34
35 def build_filter(spec, type, criteria):
36     filter = {
37         'tag': 'filter',
38         'attributes': {'type': type}
39     }
40     if type == 'subtree':
41         filter['children'] = [criteria]
42     elif type == 'xpath':
43         filter['attributes']['select'] = criteria
44     return filter