Statistics
| Branch: | Tag: | Revision:

root / ncclient / operations / retrieve.py @ 0cdb8b3c

History | View | Annotate | Download (2 kB)

1 11d9e642 Shikhar Bhushan
# Copyright 2009 Shikhar Bhushan
2 11d9e642 Shikhar Bhushan
#
3 11d9e642 Shikhar Bhushan
# Licensed under the Apache License, Version 2.0 (the "License");
4 11d9e642 Shikhar Bhushan
# you may not use this file except in compliance with the License.
5 11d9e642 Shikhar Bhushan
# You may obtain a copy of the License at
6 11d9e642 Shikhar Bhushan
#
7 11d9e642 Shikhar Bhushan
#    http://www.apache.org/licenses/LICENSE-2.0
8 11d9e642 Shikhar Bhushan
#
9 11d9e642 Shikhar Bhushan
# Unless required by applicable law or agreed to in writing, software
10 11d9e642 Shikhar Bhushan
# distributed under the License is distributed on an "AS IS" BASIS,
11 11d9e642 Shikhar Bhushan
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 11d9e642 Shikhar Bhushan
# See the License for the specific language governing permissions and
13 11d9e642 Shikhar Bhushan
# limitations under the License.
14 11d9e642 Shikhar Bhushan
15 ebf2bbc6 Shikhar Bhushan
from rpc import RPC, RPCReply
16 94803aaf Shikhar Bhushan
17 c2a5b930 Shikhar Bhushan
from ncclient import content
18 c2a5b930 Shikhar Bhushan
19 a6c00291 Shikhar Bhushan
import util
20 11d9e642 Shikhar Bhushan
21 2f8bc438 Shikhar Bhushan
class GetReply(RPCReply):
22 2f8bc438 Shikhar Bhushan
    
23 c2a5b930 Shikhar Bhushan
    'Adds data attribute'
24 c2a5b930 Shikhar Bhushan
    
25 179b00d4 Shikhar Bhushan
    # tested: no
26 c2a5b930 Shikhar Bhushan
    # combed: yes
27 179b00d4 Shikhar Bhushan
    
28 c2a5b930 Shikhar Bhushan
    def _parsing_hook(self, root):
29 179b00d4 Shikhar Bhushan
        self._data = None
30 c2a5b930 Shikhar Bhushan
        if not self._errors:
31 0cdb8b3c Shikhar Bhushan
            self._data = content.find(root, 'data', strict=False)
32 179b00d4 Shikhar Bhushan
    
33 c2a5b930 Shikhar Bhushan
    @property
34 d771dffc Shikhar Bhushan
    def data(self):
35 c2a5b930 Shikhar Bhushan
        if not self._parsed:
36 c2a5b930 Shikhar Bhushan
            self.parse()
37 c2a5b930 Shikhar Bhushan
        return self._data
38 2f8bc438 Shikhar Bhushan
39 2f8bc438 Shikhar Bhushan
class Get(RPC):
40 94803aaf Shikhar Bhushan
    
41 179b00d4 Shikhar Bhushan
    # tested: no
42 c2a5b930 Shikhar Bhushan
    # combed: yes
43 179b00d4 Shikhar Bhushan
    
44 40a92771 Shikhar Bhushan
    SPEC = {
45 40a92771 Shikhar Bhushan
        'tag': 'get',
46 179b00d4 Shikhar Bhushan
        'subtree': []
47 40a92771 Shikhar Bhushan
    }
48 94803aaf Shikhar Bhushan
    
49 d6688264 Shikhar Bhushan
    REPLY_CLS = GetReply
50 d6688264 Shikhar Bhushan
    
51 94803aaf Shikhar Bhushan
    def request(self, filter=None):
52 d6688264 Shikhar Bhushan
        spec = Get.SPEC.copy()
53 94803aaf Shikhar Bhushan
        if filter is not None:
54 d771dffc Shikhar Bhushan
            spec['subtree'].append(util.build_filter(filter))
55 94803aaf Shikhar Bhushan
        return self._request(spec)
56 94803aaf Shikhar Bhushan
57 d771dffc Shikhar Bhushan
58 a6c00291 Shikhar Bhushan
class GetConfig(RPC):
59 c2a5b930 Shikhar Bhushan
60 c2a5b930 Shikhar Bhushan
    # tested: no
61 c2a5b930 Shikhar Bhushan
    # combed: yes
62 94803aaf Shikhar Bhushan
    
63 94803aaf Shikhar Bhushan
    SPEC = {
64 94803aaf Shikhar Bhushan
        'tag': 'get-config',
65 179b00d4 Shikhar Bhushan
        'subtree': []
66 94803aaf Shikhar Bhushan
    }
67 94803aaf Shikhar Bhushan
    
68 2f8bc438 Shikhar Bhushan
    REPLY_CLS = GetReply
69 d6688264 Shikhar Bhushan
    
70 d771dffc Shikhar Bhushan
    def request(self, source, filter=None):
71 c2a5b930 Shikhar Bhushan
        """
72 c2a5b930 Shikhar Bhushan
        `filter` has to be a tuple of (type, criteria)
73 c2a5b930 Shikhar Bhushan
        The type may be one of 'xpath' or 'subtree'
74 c2a5b930 Shikhar Bhushan
        The criteria may be an ElementTree.Element, an XML fragment, or tree specification
75 c2a5b930 Shikhar Bhushan
        """
76 d6688264 Shikhar Bhushan
        spec = GetConfig.SPEC.copy()
77 d771dffc Shikhar Bhushan
        spec['subtree'].append(util.store_or_url('source', source, self._assert))
78 94803aaf Shikhar Bhushan
        if filter is not None:
79 ebf2bbc6 Shikhar Bhushan
            spec['subtree'].append(util.build_filter(filter))
80 94803aaf Shikhar Bhushan
        return self._request(spec)