Statistics
| Branch: | Tag: | Revision:

root / ncclient / operations / retrieve.py @ 216bb34c

History | View | Annotate | Download (2.6 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 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 a7cb58ce Shikhar Bhushan
            self._data = content.find(root, 'data',
30 a7cb58ce Shikhar Bhushan
                                      nslist=[content.BASE_NS,
31 a7cb58ce Shikhar Bhushan
                                              content.CISCO_BS])
32 a7cb58ce Shikhar Bhushan
33 c2a5b930 Shikhar Bhushan
    @property
34 a7cb58ce Shikhar Bhushan
    def data_ele(self):
35 216bb34c Shikhar Bhushan
        "*<data>* element as an :class:`~xml.etree.ElementTree.Element`"
36 c2a5b930 Shikhar Bhushan
        if not self._parsed:
37 c2a5b930 Shikhar Bhushan
            self.parse()
38 c2a5b930 Shikhar Bhushan
        return self._data
39 2f8bc438 Shikhar Bhushan
40 a7cb58ce Shikhar Bhushan
    @property
41 a7cb58ce Shikhar Bhushan
    def data_xml(self):
42 216bb34c Shikhar Bhushan
        "*<data>* element as an XML string"
43 a7cb58ce Shikhar Bhushan
        if not self._parsed:
44 a7cb58ce Shikhar Bhushan
            self.parse()
45 a7cb58ce Shikhar Bhushan
        return content.ele2xml(self._data)
46 a7cb58ce Shikhar Bhushan
47 216bb34c Shikhar Bhushan
    @property
48 216bb34c Shikhar Bhushan
    def data_dtree(self):
49 216bb34c Shikhar Bhushan
        "*<data>* element in :ref:`dtree`"
50 216bb34c Shikhar Bhushan
        return content.ele2dtree(self._data)
51 216bb34c Shikhar Bhushan
52 216bb34c Shikhar Bhushan
    #: Same as :attr:`data_ele`
53 a7cb58ce Shikhar Bhushan
    data = data_ele
54 a7cb58ce Shikhar Bhushan
55 a7cb58ce Shikhar Bhushan
56 2f8bc438 Shikhar Bhushan
class Get(RPC):
57 a7cb58ce Shikhar Bhushan
58 216bb34c Shikhar Bhushan
    "The *<get>* RPC"
59 a7cb58ce Shikhar Bhushan
60 216bb34c Shikhar Bhushan
    SPEC = {'tag': 'get', 'subtree': []}
61 a7cb58ce Shikhar Bhushan
62 d6688264 Shikhar Bhushan
    REPLY_CLS = GetReply
63 a7cb58ce Shikhar Bhushan
64 94803aaf Shikhar Bhushan
    def request(self, filter=None):
65 216bb34c Shikhar Bhushan
        """
66 216bb34c Shikhar Bhushan
        :arg filter: optional; see :ref:`filter`
67 216bb34c Shikhar Bhushan

68 216bb34c Shikhar Bhushan
        :seealso: :ref:`return`
69 216bb34c Shikhar Bhushan
        """
70 d6688264 Shikhar Bhushan
        spec = Get.SPEC.copy()
71 94803aaf Shikhar Bhushan
        if filter is not None:
72 d771dffc Shikhar Bhushan
            spec['subtree'].append(util.build_filter(filter))
73 94803aaf Shikhar Bhushan
        return self._request(spec)
74 94803aaf Shikhar Bhushan
75 d771dffc Shikhar Bhushan
76 a6c00291 Shikhar Bhushan
class GetConfig(RPC):
77 c2a5b930 Shikhar Bhushan
78 216bb34c Shikhar Bhushan
    "The *<get-config>* RPC"
79 a7cb58ce Shikhar Bhushan
80 216bb34c Shikhar Bhushan
    SPEC = {'tag': 'get-config', 'subtree': []}
81 a7cb58ce Shikhar Bhushan
82 2f8bc438 Shikhar Bhushan
    REPLY_CLS = GetReply
83 a7cb58ce Shikhar Bhushan
84 d771dffc Shikhar Bhushan
    def request(self, source, filter=None):
85 216bb34c Shikhar Bhushan
        """
86 216bb34c Shikhar Bhushan
        :arg source: See :ref:`source_target`
87 216bb34c Shikhar Bhushan

88 216bb34c Shikhar Bhushan
        :arg filter: optional; see :ref:`filter`
89 216bb34c Shikhar Bhushan

90 216bb34c Shikhar Bhushan
        :seealso: :ref:`return`
91 216bb34c Shikhar Bhushan
        """
92 d6688264 Shikhar Bhushan
        spec = GetConfig.SPEC.copy()
93 d771dffc Shikhar Bhushan
        spec['subtree'].append(util.store_or_url('source', source, self._assert))
94 94803aaf Shikhar Bhushan
        if filter is not None:
95 ebf2bbc6 Shikhar Bhushan
            spec['subtree'].append(util.build_filter(filter))
96 94803aaf Shikhar Bhushan
        return self._request(spec)