Revision 94803aaf ncclient/operations/retrieve.py

b/ncclient/operations/retrieve.py
12 12
# See the License for the specific language governing permissions and
13 13
# limitations under the License.
14 14

  
15
from rpc import RPC
15
from copy import deepcopy
16

  
17
from ncclient.rpc import RPC
18

  
19
def build_filter(spec, type, criteria):
20
    filter = {
21
        'tag': 'filter',
22
        'attributes': {'type': type}
23
    }
24
    if type=='subtree':
25
        if isinstance(criteria, dict):
26
            filter['children'] = [criteria]
27
        else:
28
            filter['text'] = criteria
29
    elif type=='xpath':
30
        filter['attributes']['select'] = criteria
16 31

  
17 32
class Get(RPC):
33
    
18 34
    SPEC = {
19 35
        'tag': 'get',
20
        'children': None
36
        'children': []
21 37
    }
38
    
39
    def request(self, filter=None):
40
        spec = deepcopy(SPEC)
41
        if filter is not None:
42
            spec['children'].append(build_filter(*filter))
43
        return self._request(spec)
44

  
22 45

  
23 46
class GetConfig(RPC):
24
    pass
47
    
48
    SPEC = {
49
        'tag': 'get-config',
50
        'children': [ { 'tag': 'source', 'children': {'tag': None } } ]
51
    }
52
    
53
    def request(self, source='running', filter=None):
54
        spec = deepcopy(SPEC)
55
        spec['children'][0]['children']['tag'] = source
56
        if filter is not None:
57
            spec['children'].append(build_filter(*filter))
58
        return self._request(spec)

Also available in: Unified diff