diff options
Diffstat (limited to 'os_net_config/impl_eni.py')
-rw-r--r-- | os_net_config/impl_eni.py | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/os_net_config/impl_eni.py b/os_net_config/impl_eni.py index 53d540c..6b88e85 100644 --- a/os_net_config/impl_eni.py +++ b/os_net_config/impl_eni.py @@ -57,7 +57,10 @@ class ENINetConfig(os_net_config.NetConfig): if data: return data - _iface = "iface %s " % interface.name + if isinstance(interface, objects.Vlan): + _iface = "iface vlan%i " % interface.vlan_id + else: + _iface = "iface %s " % interface.name if static_addr and static_addr.version == 6: _iface += "inet6 " else: @@ -81,12 +84,29 @@ class ENINetConfig(os_net_config.NetConfig): for i in interface.members: data += " pre-up ip addr flush dev %s\n" % i.name elif interface.ovs_port: - data += "auto %s\n" % interface.name - data += "allow-%s %s\n" % (interface.bridge_name, interface.name) + if isinstance(interface, objects.Vlan): + data += "auto vlan%i\n" % interface.vlan_id + data += "allow-%s vlan%i\n" % (interface.bridge_name, + interface.vlan_id) + data += _iface + data += address_data + data += " ovs_bridge %s\n" % interface.bridge_name + data += " ovs_type OVSIntPort\n" + data += " ovs_options tag=%s\n" % interface.vlan_id + + else: + data += "auto %s\n" % interface.name + data += "allow-%s %s\n" % (interface.bridge_name, + interface.name) + data += _iface + data += address_data + data += " ovs_bridge %s\n" % interface.bridge_name + data += " ovs_type OVSPort\n" + elif isinstance(interface, objects.Vlan): + data += "auto vlan%i\n" % interface.vlan_id data += _iface data += address_data - data += " ovs_bridge %s\n" % interface.bridge_name - data += " ovs_type OVSPort\n" + data += " vlan-raw-device %s\n" % interface.device else: data += "auto %s\n" % interface.name data += _iface @@ -107,6 +127,13 @@ class ENINetConfig(os_net_config.NetConfig): if bridge.routes: self._addRoutes(bridge.name, bridge.routes) + def addVlan(self, vlan): + data = self._addCommon(vlan) + + self.interfaces[vlan.name] = data + if vlan.routes: + self._addRoutes(vlan.name, vlan.routes) + def _addRoutes(self, interface_name, routes=[]): data = "" for route in routes: |