Statistics
| Branch: | Tag: | Revision:

root / ncclient / operations / retrieve.py @ ce5fb329

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

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

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

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