Statistics
| Branch: | Tag: | Revision:

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