Statistics
| Branch: | Tag: | Revision:

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

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 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 216bb34c Shikhar Bhushan
    """Adds attributes for the *<data>* element to :class:`RPCReply`, which
24 216bb34c Shikhar Bhushan
    pertains to the :class:`Get` and :class:`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 a7cb58ce Shikhar Bhushan
31 c2a5b930 Shikhar Bhushan
    @property
32 a7cb58ce Shikhar Bhushan
    def data_ele(self):
33 216bb34c Shikhar Bhushan
        "*<data>* element as an :class:`~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 216bb34c 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 216bb34c Shikhar Bhushan
    #: Same as :attr:`data_ele`
46 a7cb58ce Shikhar Bhushan
    data = data_ele
47 9667bcb2 Shikhar Bhushan
    
48 9667bcb2 Shikhar Bhushan
    #def __repr__(self):
49 9667bcb2 Shikhar Bhushan
    #    return self.data_xml
50 a7cb58ce Shikhar Bhushan
51 a7cb58ce Shikhar Bhushan
52 2f8bc438 Shikhar Bhushan
class Get(RPC):
53 a7cb58ce Shikhar Bhushan
54 216bb34c Shikhar Bhushan
    "The *<get>* RPC"
55 a7cb58ce Shikhar Bhushan
56 d6688264 Shikhar Bhushan
    REPLY_CLS = GetReply
57 a7cb58ce Shikhar Bhushan
58 94803aaf Shikhar Bhushan
    def request(self, filter=None):
59 9667bcb2 Shikhar Bhushan
        node = new_ele("get")
60 94803aaf Shikhar Bhushan
        if filter is not None:
61 9667bcb2 Shikhar Bhushan
            node.append(util.build_filter(filter))
62 9667bcb2 Shikhar Bhushan
        return self._request(node)
63 94803aaf Shikhar Bhushan
64 d771dffc Shikhar Bhushan
65 a6c00291 Shikhar Bhushan
class GetConfig(RPC):
66 c2a5b930 Shikhar Bhushan
67 216bb34c Shikhar Bhushan
    "The *<get-config>* RPC"
68 a7cb58ce Shikhar Bhushan
69 2f8bc438 Shikhar Bhushan
    REPLY_CLS = GetReply
70 a7cb58ce Shikhar Bhushan
71 d771dffc Shikhar Bhushan
    def request(self, source, filter=None):
72 9667bcb2 Shikhar Bhushan
        node = new_ele("get-config")
73 9667bcb2 Shikhar Bhushan
        node.append(util.datastore_or_url("source", source, self._assert))
74 94803aaf Shikhar Bhushan
        if filter is not None:
75 9667bcb2 Shikhar Bhushan
            node.append(util.build_filter(filter))
76 9667bcb2 Shikhar Bhushan
        return self._request(node)