Statistics
| Branch: | Tag: | Revision:

root / ncclient / operations / retrieve.py @ 179b00d4

History | View | Annotate | Download (1.8 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 d6688264 Shikhar Bhushan
from ncclient.rpc import RPC, RPCReply
16 94803aaf Shikhar Bhushan
17 a6c00291 Shikhar Bhushan
import util
18 11d9e642 Shikhar Bhushan
19 2f8bc438 Shikhar Bhushan
class GetReply(RPCReply):
20 2f8bc438 Shikhar Bhushan
    
21 179b00d4 Shikhar Bhushan
    # tested: no
22 179b00d4 Shikhar Bhushan
    
23 179b00d4 Shikhar Bhushan
    def __init__(self, *args, **kwds):
24 179b00d4 Shikhar Bhushan
        RPCReply.__init__(self, *args, **kwds)
25 179b00d4 Shikhar Bhushan
        self._data = None
26 179b00d4 Shikhar Bhushan
    
27 2f8bc438 Shikhar Bhushan
    def parse(self):
28 2f8bc438 Shikhar Bhushan
        RPCReply.parse(self)
29 179b00d4 Shikhar Bhushan
        if self.ok:
30 179b00d4 Shikhar Bhushan
            self.root.find('data')
31 a6c00291 Shikhar Bhushan
    
32 a6c00291 Shikhar Bhushan
    @property
33 a6c00291 Shikhar Bhushan
    def data(self):
34 179b00d4 Shikhar Bhushan
        return ET.tostring(self._data)
35 2f8bc438 Shikhar Bhushan
36 2f8bc438 Shikhar Bhushan
class Get(RPC):
37 94803aaf Shikhar Bhushan
    
38 179b00d4 Shikhar Bhushan
    # tested: no
39 179b00d4 Shikhar Bhushan
    
40 40a92771 Shikhar Bhushan
    SPEC = {
41 40a92771 Shikhar Bhushan
        'tag': 'get',
42 179b00d4 Shikhar Bhushan
        'subtree': []
43 40a92771 Shikhar Bhushan
    }
44 94803aaf Shikhar Bhushan
    
45 d6688264 Shikhar Bhushan
    REPLY_CLS = GetReply
46 d6688264 Shikhar Bhushan
    
47 94803aaf Shikhar Bhushan
    def request(self, filter=None):
48 d6688264 Shikhar Bhushan
        spec = Get.SPEC.copy()
49 94803aaf Shikhar Bhushan
        if filter is not None:
50 179b00d4 Shikhar Bhushan
            spec['subtree'].append(util.build_filter(*filter))
51 94803aaf Shikhar Bhushan
        return self._request(spec)
52 94803aaf Shikhar Bhushan
53 a6c00291 Shikhar Bhushan
class GetConfig(RPC):
54 94803aaf Shikhar Bhushan
    
55 94803aaf Shikhar Bhushan
    SPEC = {
56 94803aaf Shikhar Bhushan
        'tag': 'get-config',
57 179b00d4 Shikhar Bhushan
        'subtree': []
58 94803aaf Shikhar Bhushan
    }
59 94803aaf Shikhar Bhushan
    
60 2f8bc438 Shikhar Bhushan
    REPLY_CLS = GetReply
61 d6688264 Shikhar Bhushan
    
62 d6688264 Shikhar Bhushan
    def request(self, source=None, source_url=None, filter=None):
63 a6c00291 Shikhar Bhushan
        util.one_of(source, source_url)
64 d6688264 Shikhar Bhushan
        spec = GetConfig.SPEC.copy()
65 179b00d4 Shikhar Bhushan
        subtree = spec['subtree']
66 179b00d4 Shikhar Bhushan
        subtree.append({'tag': 'source', 'subtree': util.store_or_url(source, source_url)})
67 94803aaf Shikhar Bhushan
        if filter is not None:
68 179b00d4 Shikhar Bhushan
            subtree.append(util.build_filter(*filter))
69 94803aaf Shikhar Bhushan
        return self._request(spec)