Statistics
| Branch: | Tag: | Revision:

root / ncclient / operations / retrieve.py @ bbd4ce54

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 57b5f922 Shikhar Bhushan
from ncclient import xml_
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 57b5f922 Shikhar Bhushan
            self._data = xml_.find(root, 'data',
33 57b5f922 Shikhar Bhushan
                                      nslist=[xml_.BASE_NS,
34 57b5f922 Shikhar Bhushan
                                              xml_.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 57b5f922 Shikhar Bhushan
        return xml_.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 57b5f922 Shikhar Bhushan
        return xml_.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)