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