Statistics
| Branch: | Tag: | Revision:

root / ncclient / capabilities.py @ 583c11f6

History | View | Annotate | Download (2.6 kB)

1 d095a59e Shikhar Bhushan
# Copyright 2009 Shikhar Bhushan
2 d095a59e Shikhar Bhushan
#
3 d095a59e Shikhar Bhushan
# Licensed under the Apache License, Version 2.0 (the "License");
4 d095a59e Shikhar Bhushan
# you may not use this file except in compliance with the License.
5 d095a59e Shikhar Bhushan
# You may obtain a copy of the License at
6 d095a59e Shikhar Bhushan
#
7 d095a59e Shikhar Bhushan
#    http://www.apache.org/licenses/LICENSE-2.0
8 d095a59e Shikhar Bhushan
#
9 d095a59e Shikhar Bhushan
# Unless required by applicable law or agreed to in writing, software
10 d095a59e Shikhar Bhushan
# distributed under the License is distributed on an "AS IS" BASIS,
11 d095a59e Shikhar Bhushan
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 d095a59e Shikhar Bhushan
# See the License for the specific language governing permissions and
13 d095a59e Shikhar Bhushan
# limitations under the License.
14 d095a59e Shikhar Bhushan
15 78f6c132 Shikhar Bhushan
16 d095a59e Shikhar Bhushan
class Capabilities:
17 d095a59e Shikhar Bhushan
    
18 78f6c132 Shikhar Bhushan
    """Represent the capabilities of client or server. Also facilitates using
19 78f6c132 Shikhar Bhushan
    abbreviated capability names in addition to complete URI.
20 78f6c132 Shikhar Bhushan
    """
21 78f6c132 Shikhar Bhushan
    
22 d095a59e Shikhar Bhushan
    def __init__(self, capabilities=None):
23 d095a59e Shikhar Bhushan
        self._dict = {}
24 d095a59e Shikhar Bhushan
        if isinstance(capabilities, dict):
25 d095a59e Shikhar Bhushan
            self._dict = capabilities
26 d095a59e Shikhar Bhushan
        elif isinstance(capabilities, list):
27 d095a59e Shikhar Bhushan
            for uri in capabilities:
28 d095a59e Shikhar Bhushan
                self._dict[uri] = Capabilities.guess_shorthand(uri)
29 d095a59e Shikhar Bhushan
    
30 d095a59e Shikhar Bhushan
    def __contains__(self, key):
31 d095a59e Shikhar Bhushan
        return ( key in self._dict ) or ( key in self._dict.values() )
32 d095a59e Shikhar Bhushan
    
33 d095a59e Shikhar Bhushan
    def __iter__(self):
34 d095a59e Shikhar Bhushan
        return self._dict.keys().__iter__()
35 d095a59e Shikhar Bhushan
    
36 d095a59e Shikhar Bhushan
    def __repr__(self):
37 d095a59e Shikhar Bhushan
        return repr(self._dict.keys())
38 d095a59e Shikhar Bhushan
    
39 94803aaf Shikhar Bhushan
    def __list__(self):
40 94803aaf Shikhar Bhushan
        return self._dict.keys()
41 94803aaf Shikhar Bhushan
    
42 d095a59e Shikhar Bhushan
    def add(self, uri, shorthand=None):
43 d095a59e Shikhar Bhushan
        if shorthand is None:
44 d095a59e Shikhar Bhushan
            shorthand = Capabilities.guess_shorthand(uri)
45 d095a59e Shikhar Bhushan
        self._dict[uri] = shorthand
46 d095a59e Shikhar Bhushan
    
47 d095a59e Shikhar Bhushan
    set = add
48 d095a59e Shikhar Bhushan
    
49 d095a59e Shikhar Bhushan
    def remove(self, key):
50 d095a59e Shikhar Bhushan
        if key in self._dict:
51 d095a59e Shikhar Bhushan
            del self._dict[key]
52 d095a59e Shikhar Bhushan
        else:
53 d095a59e Shikhar Bhushan
            for uri in self._dict:
54 d095a59e Shikhar Bhushan
                if self._dict[uri] == key:
55 d095a59e Shikhar Bhushan
                    del self._dict[uri]
56 d095a59e Shikhar Bhushan
                    break
57 d095a59e Shikhar Bhushan
    
58 d095a59e Shikhar Bhushan
    @staticmethod
59 d095a59e Shikhar Bhushan
    def guess_shorthand(uri):
60 d095a59e Shikhar Bhushan
        if uri.startswith('urn:ietf:params:netconf:capability:'):
61 d095a59e Shikhar Bhushan
            return (':' + uri.split(':')[5])
62 d095a59e Shikhar Bhushan
63 d095a59e Shikhar Bhushan
CAPABILITIES = Capabilities([
64 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:base:1.0',
65 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:writable-running:1.0',
66 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:candidate:1.0',
67 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:confirmed-commit:1.0',
68 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:rollback-on-error:1.0',
69 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:startup:1.0',
70 d771dffc Shikhar Bhushan
    'urn:ietf:params:netconf:capability:url:1.0?scheme=http,ftp,file',
71 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:validate:1.0',
72 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:xpath:1.0',
73 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:notification:1.0',
74 d6688264 Shikhar Bhushan
    'urn:ietf:params:netconf:capability:interleave:1.0'
75 d6688264 Shikhar Bhushan
])