]>
git.proxmox.com Git - mirror_ifupdown2.git/blob - pkg/iface.py
3 # Copyright 2013. Cumulus Networks, Inc.
4 # Author: Roopa Prabhu, roopa@cumulusnetworks.com
16 FOLLOW_DEPENDENTS
= 0x2
27 def to_str(cls
, state
):
28 if state
== cls
.UNKNOWN
:
30 elif state
== cls
.SUCCESS
:
32 elif state
== cls
.ERROR
:
36 def from_str(cls
, state_str
):
37 if state_str
== 'unknown':
39 elif state_str
== 'success':
41 elif state_str
== 'error':
57 def to_str(cls
, state
):
58 if state
== cls
.UNKNOWN
:
60 elif state
== cls
.NEW
:
62 elif state
== cls
.PRE_UP
:
66 elif state
== cls
.POST_UP
:
68 elif state
== cls
.PRE_DOWN
:
70 elif state
== cls
.POST_DOWN
:
74 def from_str(cls
, state_str
):
75 if state_str
== 'unknown':
77 elif state_str
== 'new':
79 elif state_str
== 'pre-up':
81 elif state_str
== 'up':
83 elif state_str
== 'post-up':
85 elif state_str
== 'pre-down':
87 elif state_str
== 'post-down':
99 self
.addr_family
= None
100 self
.addr_method
= None
103 self
.state
= ifaceState
.NEW
104 self
.status
= ifaceStatus
.UNKNOWN
107 self
.dependents
= None
111 self
.config_current
= {}
113 self
.linkstate
= None
115 def inc_refcnt(self
):
116 #print 'inside inc_refcnt = %d' %self.refcnt
119 def dec_refcnt(self
):
122 def get_refcnt(self
):
125 def set_refcnt(self
, cnt
):
128 def set_name(self
, name
):
134 def set_addr_family(self
, family
):
135 self
.addr_family
= family
137 def get_addr_family(self
):
138 return self
.addr_family
140 def set_addr_method(self
, method
):
141 self
.addr_method
= method
143 def get_addr_method(self
):
144 return self
.addr_method
146 def set_config(self
, config_dict
):
147 self
.config
= config_dict
149 def get_config(self
):
152 def set_config_current(self
, config_current
):
153 self
.config_current
= config_current
155 def get_config_current(self
):
156 return self
.config_current
164 def reset_auto(self
):
167 def get_classes(self
):
170 def set_classes(self
, classes
):
171 """ sets interface class list to the one passed as arg """
172 self
.classes
= classes
174 def set_class(self
, classname
):
175 """ Appends a class to the list """
176 self
.classes
.append(classname
)
178 def belongs_to_class(self
, intfclass
):
179 if intfclass
in self
.classes
:
184 def add_child(self
, child_iface_obj
):
185 self
.children
.append(child_iface_obj
)
190 def get_state_str(self
):
191 return ifaceState
.to_str(self
.state
)
193 def set_state(self
, state
):
196 def get_status(self
):
199 def get_status_str(self
):
200 return ifaceStatus
.to_str(self
.status
)
202 def set_status(self
, status
):
205 def state_str_to_hex(self
, state_str
):
206 return self
.state_str_map
.get(state_str
)
208 def set_flag(self
, flag
):
211 def clear_flag(self
, flag
):
214 def set_dependents(self
, dlist
):
215 self
.dependents
= dlist
217 def get_dependents(self
):
218 return self
.dependents
220 def set_linkstate(self
, l
):
223 def get_linkstate(self
):
224 return self
.linkstate
226 def get_attr_value(self
, attr_name
):
227 config
= self
.get_config()
229 return config
.get(attr_name
)
231 def get_attr_value_first(self
, attr_name
):
232 config
= self
.get_config()
234 attr_value_list
= config
.get(attr_name
)
235 if attr_value_list
is not None:
236 return attr_value_list
[0]
240 def get_attr_value_n(self
, attr_name
, attr_index
):
241 config
= self
.get_config()
243 attr_value_list
= config
.get(attr_name
)
244 if attr_value_list
is not None:
246 return attr_value_list
[attr_index
]
253 if self
.env
is None or len(self
.env
) == 0:
257 def set_env(self
, env
):
260 def generate_env(self
):
262 config
= self
.get_config()
263 env
['IFACE'] = self
.get_name()
264 for attr
, attr_value
in config
.items():
265 attr_env_name
= 'IF_%s' %attr
.upper()
266 env
[attr_env_name
] = attr_value
[0]
271 def update_config(self
, attr_name
, attr_value
, attr_status
=0):
272 if attr_value
is None:
276 self
.set_status(ifaceStatus
.ERROR
)
278 if self
.get_status() != ifaceStatus
.ERROR
:
279 self
.set_status(ifaceStatus
.SUCCESS
)
280 if self
.config
.get(attr_name
) is not None:
281 self
.config
[attr_name
].append(attr_value
)
283 self
.config
[attr_name
] = [attr_value
]
285 """ XXX: If status needs to be encoded in the query string
289 elif attr_status == 0:
290 attr_status_str = ' (success)'
291 elif attr_status != 0:
292 attr_status_str = ' (error)'
293 self.config[attr_name] = attr_value + attr_status_str """
295 def dump_raw(self
, logger
):
297 print (self
.raw_lines
[0])
298 for i
in range(1, len(self
.raw_lines
)):
299 print (indent
+ self
.raw_lines
[i
])
301 def dump(self
, logger
):
303 logger
.info(self
.get_name() + ' : {')
304 logger
.info(indent
+ 'family: %s' %self
.get_addr_family())
305 logger
.info(indent
+ 'method: %s' %self
.get_addr_method())
306 logger
.info(indent
+ 'state: %s'
307 %ifaceState
.to_str(self
.get_state()))
308 logger
.info(indent
+ 'status: %s'
309 %ifaceStatus
.to_str(self
.get_status()))
310 logger
.info(indent
+ 'refcnt: %d' %self
.get_refcnt())
311 d
= self
.get_dependents()
313 logger
.info(indent
+ 'dependents: %s' %str
(d
))
315 logger
.info(indent
+ 'dependents: None')
317 logger
.info(indent
+ 'config: ')
318 config
= self
.get_config()
319 if config
is not None:
320 logger
.info(indent
+ indent
+ str(config
))
323 def dump_pretty(self
, logger
):
325 outbuf
= 'iface %s' %self
.get_name()
326 if self
.get_addr_family() is not None:
327 outbuf
+= ' %s' %self
.get_addr_family()
329 if self
.get_addr_method() is not None:
330 outbuf
+= ' %s' %self
.get_addr_method()
334 config
= self
.get_config()
335 if config
is not None:
336 for cname
, cvaluelist
in config
.items():
337 for cv
in cvaluelist
:
338 outbuf
+= indent
+ '%s' %cname
+ ' %s\n' %cv
340 #outbuf += ('%s' %indent + '%s' %self.get_state_str() +
341 # ' %s' %self.get_status_str())
346 def dump_json(self
, logger
):