root / ncclient / content / hello.py @ 589b23e4
History | View | Annotate | Download (2.3 kB)
1 | 589b23e4 | Shikhar Bhushan | # Copyright 2009 Shikhar Bhushan
|
---|---|---|---|
2 | 589b23e4 | Shikhar Bhushan | #
|
3 | 589b23e4 | Shikhar Bhushan | # Licensed under the Apache License, Version 2.0 (the "License");
|
4 | 589b23e4 | Shikhar Bhushan | # you may not use this file except in compliance with the License.
|
5 | 589b23e4 | Shikhar Bhushan | # You may obtain a copy of the License at
|
6 | 589b23e4 | Shikhar Bhushan | #
|
7 | 589b23e4 | Shikhar Bhushan | # http://www.apache.org/licenses/LICENSE-2.0
|
8 | 589b23e4 | Shikhar Bhushan | #
|
9 | 589b23e4 | Shikhar Bhushan | # Unless required by applicable law or agreed to in writing, software
|
10 | 589b23e4 | Shikhar Bhushan | # distributed under the License is distributed on an "AS IS" BASIS,
|
11 | 589b23e4 | Shikhar Bhushan | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12 | 589b23e4 | Shikhar Bhushan | # See the License for the specific language governing permissions and
|
13 | 589b23e4 | Shikhar Bhushan | # limitations under the License.
|
14 | 589b23e4 | Shikhar Bhushan | |
15 | 589b23e4 | Shikhar Bhushan | import logging |
16 | 589b23e4 | Shikhar Bhushan | from xml.etree import cElementTree as ElementTree |
17 | 589b23e4 | Shikhar Bhushan | |
18 | 589b23e4 | Shikhar Bhushan | logging.getLogger('ncclient.content.hello')
|
19 | 589b23e4 | Shikhar Bhushan | |
20 | 589b23e4 | Shikhar Bhushan | from ..capability import Capabilities |
21 | 589b23e4 | Shikhar Bhushan | |
22 | 589b23e4 | Shikhar Bhushan | ns = 'urn:ietf:params:xml:ns:netconf:base:1.0'
|
23 | 589b23e4 | Shikhar Bhushan | |
24 | 589b23e4 | Shikhar Bhushan | def make(capabilities): |
25 | 589b23e4 | Shikhar Bhushan | return '<hello xmlns="%s">%s</hello>' % (ns, capabilities) |
26 | 589b23e4 | Shikhar Bhushan | |
27 | 589b23e4 | Shikhar Bhushan | def parse(raw): |
28 | 589b23e4 | Shikhar Bhushan | id, capabilities = 0, Capabilities() |
29 | 589b23e4 | Shikhar Bhushan | hello = ElementTree.fromstring(raw) |
30 | 589b23e4 | Shikhar Bhushan | for child in hello.getchildren(): |
31 | 589b23e4 | Shikhar Bhushan | if child.tag == '{%s}session-id' % ns: |
32 | 589b23e4 | Shikhar Bhushan | id = child.text |
33 | 589b23e4 | Shikhar Bhushan | elif child.tag == '{%s}capabilities' % ns: |
34 | 589b23e4 | Shikhar Bhushan | for cap in child.getiterator('{%s}capability' % ns): |
35 | 589b23e4 | Shikhar Bhushan | capabilities.add(cap.text) |
36 | 589b23e4 | Shikhar Bhushan | return id, capabilities |
37 | 589b23e4 | Shikhar Bhushan | |
38 | 589b23e4 | Shikhar Bhushan | #class HelloParser:
|
39 | 589b23e4 | Shikhar Bhushan | #
|
40 | 589b23e4 | Shikhar Bhushan | # 'Fast parsing with expat'
|
41 | 589b23e4 | Shikhar Bhushan | #
|
42 | 589b23e4 | Shikhar Bhushan | # capability, sid = range(2)
|
43 | 589b23e4 | Shikhar Bhushan | #
|
44 | 589b23e4 | Shikhar Bhushan | # def __init__(self, raw):
|
45 | 589b23e4 | Shikhar Bhushan | # self._sid = None
|
46 | 589b23e4 | Shikhar Bhushan | # self._capabilities = Capabilities()
|
47 | 589b23e4 | Shikhar Bhushan | # p = xml.parsers.expat.ParserCreate()
|
48 | 589b23e4 | Shikhar Bhushan | # p.StartElementHandler = self._start_element
|
49 | 589b23e4 | Shikhar Bhushan | # p.EndElementHandler = self._end_element
|
50 | 589b23e4 | Shikhar Bhushan | # p.CharacterDataHandler = self._char_data
|
51 | 589b23e4 | Shikhar Bhushan | # self._expect = None
|
52 | 589b23e4 | Shikhar Bhushan | # p.parse(raw, True)
|
53 | 589b23e4 | Shikhar Bhushan | #
|
54 | 589b23e4 | Shikhar Bhushan | # def _start_element(self, name, attrs):
|
55 | 589b23e4 | Shikhar Bhushan | # if name == 'capability':
|
56 | 589b23e4 | Shikhar Bhushan | # self._expect = HelloParser.capability
|
57 | 589b23e4 | Shikhar Bhushan | # elif name == 'session-id':
|
58 | 589b23e4 | Shikhar Bhushan | # self._expect = HelloParser.sid
|
59 | 589b23e4 | Shikhar Bhushan | #
|
60 | 589b23e4 | Shikhar Bhushan | # def _end_element(self, name):
|
61 | 589b23e4 | Shikhar Bhushan | # self._expect = None
|
62 | 589b23e4 | Shikhar Bhushan | #
|
63 | 589b23e4 | Shikhar Bhushan | # def _char_data(self, data):
|
64 | 589b23e4 | Shikhar Bhushan | # if self._expect == HelloParser.capability:
|
65 | 589b23e4 | Shikhar Bhushan | # self._capabilities.add(data)
|
66 | 589b23e4 | Shikhar Bhushan | # elif self._expect == HelloParser.sid:
|
67 | 589b23e4 | Shikhar Bhushan | # self._sid = int(data)
|
68 | 589b23e4 | Shikhar Bhushan | #
|
69 | 589b23e4 | Shikhar Bhushan | # @property
|
70 | 589b23e4 | Shikhar Bhushan | # def sid(self): return self._sid
|
71 | 589b23e4 | Shikhar Bhushan | #
|
72 | 589b23e4 | Shikhar Bhushan | # @property
|
73 | 589b23e4 | Shikhar Bhushan | # def capabilities(self): return self._capabilities |