Statistics
| Branch: | Tag: | Revision:

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

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

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

94 216bb34c Shikhar Bhushan
        :arg filter: optional; see :ref:`filter`
95 216bb34c Shikhar Bhushan

96 216bb34c Shikhar Bhushan
        :seealso: :ref:`return`
97 216bb34c Shikhar Bhushan
        """
98 d6688264 Shikhar Bhushan
        spec = GetConfig.SPEC.copy()
99 d771dffc Shikhar Bhushan
        spec['subtree'].append(util.store_or_url('source', source, self._assert))
100 94803aaf Shikhar Bhushan
        if filter is not None:
101 ebf2bbc6 Shikhar Bhushan
            spec['subtree'].append(util.build_filter(filter))
102 94803aaf Shikhar Bhushan
        return self._request(spec)