@@ -82,6 +82,7 @@ def __init__(self, macaddr=None, type=TYPE_BRIDGE, bridge=None,
8282 self ._type = None
8383 self ._model = None
8484 self ._target_dev = None
85+ self ._source_dev = None
8586
8687 if self ._is_parse ():
8788 return
@@ -96,6 +97,21 @@ def __init__(self, macaddr=None, type=TYPE_BRIDGE, bridge=None,
9697 if network is None :
9798 raise ValueError , _ ("A network name was not provided" )
9899
100+ def get_source (self ):
101+ """
102+ Convenince function, try to return the relevant <source> value
103+ per the network type.
104+ """
105+ if self .type == self .TYPE_VIRTUAL :
106+ return self .network
107+ if self .type == self .TYPE_BRIDGE :
108+ return self .bridge
109+ if self .type == self .TYPE_ETHERNET :
110+ return self .source_dev
111+ if self .type == self .TYPE_USER :
112+ return None
113+ return self .network or self .bridge or self .source_dev
114+
99115 def get_type (self ):
100116 return self ._type
101117 def set_type (self , val ):
@@ -158,6 +174,13 @@ def set_target_dev(self, val):
158174 target_dev = _xml_property (get_target_dev , set_target_dev ,
159175 xpath = "./target/@dev" )
160176
177+ def get_source_dev (self ):
178+ return self ._source_dev
179+ def set_source_dev (self , val ):
180+ self ._source_dev = val
181+ source_dev = _xml_property (get_source_dev , set_source_dev ,
182+ xpath = "./source/@dev" )
183+
161184 def is_conflict_net (self , conn ):
162185 """
163186 is_conflict_net: determines if mac conflicts with others in system
@@ -233,6 +256,8 @@ def _get_xml_config(self):
233256 src_xml = " <source bridge='%s'/>\n " % self .bridge
234257 elif self .type == self .TYPE_VIRTUAL :
235258 src_xml = " <source network='%s'/>\n " % self .network
259+ elif self .type == self .TYPE_ETHERNET and self .source_dev :
260+ src_xml = " <source dev='%s'/>\n " % self .source_dev
236261
237262 if self .model :
238263 model_xml = " <model type='%s'/>\n " % self .model
0 commit comments