]>
git.proxmox.com Git - mirror_ifupdown2.git/blob - pkg/iface.py
8 FOLLOW_DEPENDENTS
= 0x2
18 def to_str(cls
, state
):
19 if state
== cls
.UNKNOWN
:
21 elif state
== cls
.SUCCESS
:
23 elif state
== cls
.ERROR
:
27 def from_str(cls
, state_str
):
28 if state_str
== 'unknown':
30 elif state_str
== 'success':
32 elif state_str
== 'error':
48 def to_str(cls
, state
):
49 if state
== cls
.UNKNOWN
:
51 elif state
== cls
.NEW
:
53 elif state
== cls
.PRE_UP
:
57 elif state
== cls
.POST_UP
:
59 elif state
== cls
.PRE_DOWN
:
61 elif state
== cls
.POST_DOWN
:
65 def from_str(cls
, state_str
):
66 if state_str
== 'unknown':
68 elif state_str
== 'new':
70 elif state_str
== 'pre-up':
72 elif state_str
== 'up':
74 elif state_str
== 'post-up':
76 elif state_str
== 'pre-down':
78 elif state_str
== 'post-down':
90 self
.addr_family
= None
91 self
.addr_method
= None
94 self
.state
= ifaceState
.NEW
95 self
.status
= ifaceStatus
.UNKNOWN
98 self
.dependents
= None
102 self
.config_current
= {}
104 self
.linkstate
= None
106 def inc_refcnt(self
):
107 #print 'inside inc_refcnt = %d' %self.refcnt
110 def dec_refcnt(self
):
113 def get_refcnt(self
):
116 def set_refcnt(self
, cnt
):
119 def set_name(self
, name
):
125 def set_addr_family(self
, family
):
126 self
.addr_family
= family
128 def get_addr_family(self
):
129 return self
.addr_family
131 def set_addr_method(self
, method
):
132 self
.addr_method
= method
134 def get_addr_method(self
):
135 return self
.addr_method
137 def set_config(self
, config_dict
):
138 self
.config
= config_dict
140 def get_config(self
):
143 def set_config_current(self
, config_current
):
144 self
.config_current
= config_current
146 def get_config_current(self
):
147 return self
.config_current
155 def reset_auto(self
):
158 def get_classes(self
):
161 def set_classes(self
, classname
):
162 self
.classes
.append(classname
)
164 def belongs_to_class(self
, intfclass
):
165 if intfclass
in self
.classes
:
170 def add_child(self
, child_iface_obj
):
171 self
.children
.append(child_iface_obj
)
176 def get_state_str(self
):
177 return ifaceState
.to_str(self
.state
)
179 def set_state(self
, state
):
182 def get_status(self
):
185 def get_status_str(self
):
186 return ifaceStatus
.to_str(self
.status
)
188 def set_status(self
, status
):
191 def state_str_to_hex(self
, state_str
):
192 return self
.state_str_map
.get(state_str
)
194 def set_flag(self
, flag
):
197 def clear_flag(self
, flag
):
200 def set_dependents(self
, dlist
):
201 self
.dependents
= dlist
203 def get_dependents(self
):
204 return self
.dependents
206 def set_linkstate(self
, l
):
209 def get_linkstate(self
):
210 return self
.linkstate
212 def run_children(self
, stage
, module_list
, force
=0):
214 if (self
.is_flag_on(ifaceFlags
.FOLLOW_DEPENDENTS
)
218 for c
in self
.children
:
220 ifaceFlags
.FOLLOW_DEPENDENTS
)
221 ret
= c
.run(stage
, module_list
, force
)
223 ifaceFlags
.FOLLOW_DEPENDENTS
)
226 self
.set_state(stage
, ret
)
232 def run(self
, stage
, module_list
, force
=0):
236 ret
= self
.run_children()
238 if ret
!= 0 and force
== 0:
241 for m
in module_list
:
242 ret
= m
.run(self
, stage
, force
)
244 self
.set_state(stage
, ret
)
246 # If no force, return!
251 self
.set_state(stage
, ret
)
255 def get_attr_value(self
, attr_name
):
256 config
= self
.get_config()
258 return config
.get(attr_name
)
260 def get_attr_value_first(self
, attr_name
):
261 config
= self
.get_config()
263 attr_value_list
= config
.get(attr_name
)
264 if attr_value_list
is not None:
265 return attr_value_list
[0]
269 def get_attr_value_n(self
, attr_name
, attr_index
):
270 config
= self
.get_config()
272 attr_value_list
= config
.get(attr_name
)
273 if attr_value_list
is not None:
275 return attr_value_list
[attr_index
]
282 if self
.env
is None or len(self
.env
) == 0:
286 def set_env(self
, env
):
289 def generate_env(self
):
291 config
= self
.get_config()
292 env
['IFACE'] = self
.get_name()
293 for attr
, attr_value
in config
.items():
294 attr_env_name
= 'IF_%s' %attr
.upper()
295 env
[attr_env_name
] = attr_value
[0]
300 def update_config(self
, attr_name
, attr_value
, attr_status
=None):
301 if attr_value
is None:
304 if attr_status
== None:
306 elif attr_status
== 0:
307 attr_status_str
= ' (success)'
308 elif attr_status
!= 0:
309 attr_status_str
= ' (error)'
311 self
.config
[attr_name
] = attr_value
+ attr_status_str
313 def dump_raw(self
, logger
):
315 print (self
.raw_lines
[0])
316 for i
in range(1, len(self
.raw_lines
)):
317 print (indent
+ self
.raw_lines
[i
])
319 def dump_state_pretty(self
, logger
):
321 logger
.info('iface %s' %self
.get_name())
322 for attr_name
, attr_value
in self
.get_config_current().items():
323 print (indent
+ '%s' %attr_name
+ ' %s' %attr_value
)
325 def dump(self
, logger
):
327 logger
.info(self
.get_name() + ' : {')
328 logger
.info(indent
+ 'family: %s' %self
.get_addr_family())
329 logger
.info(indent
+ 'method: %s' %self
.get_addr_method())
330 logger
.info(indent
+ 'state: %s'
331 %ifaceState
.to_str(self
.get_state()))
332 logger
.info(indent
+ 'status: %s'
333 %ifaceStatus
.to_str(self
.get_status()))
334 logger
.info(indent
+ 'refcnt: %d' %self
.get_refcnt())
335 d
= self
.get_dependents()
337 logger
.info(indent
+ 'dependents: %s' %str
(d
))
339 logger
.info(indent
+ 'dependents: None')
341 logger
.info(indent
+ 'config: ')
342 config
= self
.get_config()
343 if config
is not None:
344 logger
.info(indent
+ indent
+ str(config
))
347 def dump_pretty(self
, logger
):
349 outbuf
= 'iface %s' %self
.get_name()
350 if self
.get_addr_family() is not None:
351 outbuf
+= ' %s' %self
.get_addr_family()
353 if self
.get_addr_method() is not None:
354 outbuf
+= ' %s' %self
.get_addr_method()
358 config
= self
.get_config()
359 if config
is not None:
360 for cname
, cvalue
in config
.items():
361 outbuf
+= indent
+ '%s' %cname
+ ' %s\n' %cvalue
363 #outbuf += ('%s' %indent + '%s' %self.get_state_str() +
364 # ' %s' %self.get_status_str())