Statistics
| Branch: | Tag: | Revision:

root / ncclient / operations / retrieve.py @ dd225c7a

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

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

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

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