Statistics
| Branch: | Tag: | Revision:

root / ncclient / operations / retrieve.py @ 4bc8021f

History | View | Annotate | Download (1.9 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 9667bcb2 Shikhar Bhushan
from ncclient.xml_ import *
18 c2a5b930 Shikhar Bhushan
19 a6c00291 Shikhar Bhushan
import util
20 11d9e642 Shikhar Bhushan
21 2f8bc438 Shikhar Bhushan
class GetReply(RPCReply):
22 a7cb58ce Shikhar Bhushan
23 4bc8021f Shikhar Bhushan
    """Adds attributes for the *data* element to `RPCReply`. This pertains to the `Get` and
24 4bc8021f Shikhar Bhushan
    `GetConfig` operations."""
25 a7cb58ce Shikhar Bhushan
26 c2a5b930 Shikhar Bhushan
    def _parsing_hook(self, root):
27 179b00d4 Shikhar Bhushan
        self._data = None
28 c2a5b930 Shikhar Bhushan
        if not self._errors:
29 9667bcb2 Shikhar Bhushan
            self._data = root.find(qualify("data"))
30 4bc8021f Shikhar Bhushan
    
31 c2a5b930 Shikhar Bhushan
    @property
32 a7cb58ce Shikhar Bhushan
    def data_ele(self):
33 4bc8021f Shikhar Bhushan
        "*data* element as an `~xml.etree.ElementTree.Element`"
34 c2a5b930 Shikhar Bhushan
        if not self._parsed:
35 c2a5b930 Shikhar Bhushan
            self.parse()
36 c2a5b930 Shikhar Bhushan
        return self._data
37 2f8bc438 Shikhar Bhushan
38 a7cb58ce Shikhar Bhushan
    @property
39 a7cb58ce Shikhar Bhushan
    def data_xml(self):
40 4bc8021f Shikhar Bhushan
        "*data* element as an XML string"
41 a7cb58ce Shikhar Bhushan
        if not self._parsed:
42 a7cb58ce Shikhar Bhushan
            self.parse()
43 9667bcb2 Shikhar Bhushan
        return to_xml(self._data)
44 9667bcb2 Shikhar Bhushan
    
45 a7cb58ce Shikhar Bhushan
    data = data_ele
46 4bc8021f Shikhar Bhushan
    "Same as :attr:`data_ele`"
47 a7cb58ce Shikhar Bhushan
48 a7cb58ce Shikhar Bhushan
49 2f8bc438 Shikhar Bhushan
class Get(RPC):
50 a7cb58ce Shikhar Bhushan
51 4bc8021f Shikhar Bhushan
    "The *get* RPC."
52 a7cb58ce Shikhar Bhushan
53 d6688264 Shikhar Bhushan
    REPLY_CLS = GetReply
54 a7cb58ce Shikhar Bhushan
55 94803aaf Shikhar Bhushan
    def request(self, filter=None):
56 9667bcb2 Shikhar Bhushan
        node = new_ele("get")
57 94803aaf Shikhar Bhushan
        if filter is not None:
58 9667bcb2 Shikhar Bhushan
            node.append(util.build_filter(filter))
59 9667bcb2 Shikhar Bhushan
        return self._request(node)
60 94803aaf Shikhar Bhushan
61 d771dffc Shikhar Bhushan
62 a6c00291 Shikhar Bhushan
class GetConfig(RPC):
63 c2a5b930 Shikhar Bhushan
64 4bc8021f Shikhar Bhushan
    "The *get-config* RPC."
65 a7cb58ce Shikhar Bhushan
66 2f8bc438 Shikhar Bhushan
    REPLY_CLS = GetReply
67 a7cb58ce Shikhar Bhushan
68 d771dffc Shikhar Bhushan
    def request(self, source, filter=None):
69 9667bcb2 Shikhar Bhushan
        node = new_ele("get-config")
70 9667bcb2 Shikhar Bhushan
        node.append(util.datastore_or_url("source", source, self._assert))
71 94803aaf Shikhar Bhushan
        if filter is not None:
72 9667bcb2 Shikhar Bhushan
            node.append(util.build_filter(filter))
73 9667bcb2 Shikhar Bhushan
        return self._request(node)