Revision 0cdb8b3c ncclient/capabilities.py
b/ncclient/capabilities.py | ||
---|---|---|
12 | 12 |
# See the License for the specific language governing permissions and |
13 | 13 |
# limitations under the License. |
14 | 14 |
|
15 |
def abbreviate(uri): |
|
16 |
if uri.startswith('urn:ietf:params:netconf:capability:'): |
|
17 |
return (':' + uri.split(':')[5]) |
|
18 |
|
|
19 |
def schemes(uri): |
|
20 |
return uri.partition("?scheme=")[2].split(',') |
|
15 | 21 |
|
16 | 22 |
class Capabilities: |
17 | 23 |
|
... | ... | |
25 | 31 |
self._dict = capabilities |
26 | 32 |
elif isinstance(capabilities, list): |
27 | 33 |
for uri in capabilities: |
28 |
self._dict[uri] = Capabilities.guess_shorthand(uri)
|
|
34 |
self._dict[uri] = abbreviate(uri)
|
|
29 | 35 |
|
30 | 36 |
def __contains__(self, key): |
31 | 37 |
return ( key in self._dict ) or ( key in self._dict.values() ) |
... | ... | |
41 | 47 |
|
42 | 48 |
def add(self, uri, shorthand=None): |
43 | 49 |
if shorthand is None: |
44 |
shorthand = Capabilities.guess_shorthand(uri)
|
|
50 |
shorthand = abbreviate(uri)
|
|
45 | 51 |
self._dict[uri] = shorthand |
46 | 52 |
|
47 | 53 |
set = add |
... | ... | |
54 | 60 |
if self._dict[uri] == key: |
55 | 61 |
del self._dict[uri] |
56 | 62 |
break |
57 |
|
|
58 |
@staticmethod |
|
59 |
def guess_shorthand(uri): |
|
60 |
if uri.startswith('urn:ietf:params:netconf:capability:'): |
|
61 |
return (':' + uri.split(':')[5]) |
|
62 | 63 |
|
64 |
# : the capabilities currently supported by ncclient |
|
63 | 65 |
CAPABILITIES = Capabilities([ |
64 | 66 |
'urn:ietf:params:netconf:base:1.0', |
65 | 67 |
'urn:ietf:params:netconf:capability:writable-running:1.0', |
... | ... | |
67 | 69 |
'urn:ietf:params:netconf:capability:confirmed-commit:1.0', |
68 | 70 |
'urn:ietf:params:netconf:capability:rollback-on-error:1.0', |
69 | 71 |
'urn:ietf:params:netconf:capability:startup:1.0', |
70 |
'urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file', |
|
72 |
'urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file,https,sftp',
|
|
71 | 73 |
'urn:ietf:params:netconf:capability:validate:1.0', |
72 | 74 |
'urn:ietf:params:netconf:capability:xpath:1.0', |
73 |
'urn:ietf:params:netconf:capability:notification:1.0',
|
|
74 |
'urn:ietf:params:netconf:capability:interleave:1.0'
|
|
75 |
]) |
|
75 |
#'urn:ietf:params:netconf:capability:notification:1.0', # TODO
|
|
76 |
#'urn:ietf:params:netconf:capability:interleave:1.0' # theoretically already supported
|
|
77 |
]) |
Also available in: Unified diff