def _generate_bridge_operation(self, version=1): """Generate bridge operation for this interface.""" addrs = self._generate_addresses(version=version) bridge_operation = self._get_initial_params() if version == 1: bridge_operation.update({ "id": self.name, "type": "bridge", "name": self.name, "mac_address": str(self.iface.mac_address), "bridge_interfaces": [parent.get_name() for parent in self.iface.parents.order_by('name')], "params": self._get_bridge_params(), }) if addrs: bridge_operation["subnets"] = addrs elif version == 2: bridge_operation.update({ # XXX mpontillo 2017-02-17: netplan does not yet support # specifying the MAC that should be used for a bond. # See launchpad bug #1664698. # "macaddress": str(self.iface.mac_address), "interfaces": [ parent.get_name() for parent in self.iface.parents.order_by('name') ], }) bridge_params = get_netplan_bridge_parameters( self._get_bridge_params()) if len(bridge_params) > 0: bridge_operation['parameters'] = bridge_params bridge_operation.update(addrs) return bridge_operation
def _generate_bridge_operation(self, version=1): """Generate bridge operation for this interface.""" addrs = self._generate_addresses(version=version) bridge_operation = self._get_initial_params() if version == 1: bridge_operation.update({ "id": self.name, "type": "bridge", "name": self.name, "mac_address": str(self.iface.mac_address), "bridge_interfaces": [parent.get_name() for parent in self.iface.parents.order_by('name')], "params": self._get_bridge_params(), }) if addrs: bridge_operation["subnets"] = addrs elif version == 2: bridge_operation.update({ "macaddress": str(self.iface.mac_address), "interfaces": [ parent.get_name() for parent in self.iface.parents.order_by('name') ], }) bridge_params = get_netplan_bridge_parameters( self._get_bridge_params()) if len(bridge_params) > 0: bridge_operation['parameters'] = bridge_params bridge_operation.update(addrs) return bridge_operation
def test_skips_and_logs_parameters_with_no_netplan_equivalent(self): with TwistedLoggerFixture() as logger: netplan_params = get_netplan_bridge_parameters({ "bridge_waitport": True, "bridge_maxage": 10 }) self.assertThat( logger.output, DocTestMatches( dedent("""\ ...no netplan equivalent for bridge option...""")), ) self.expectThat(netplan_params, Equals({"max-age": 10}))
def test_converts_parameter_names(self): netplan_params = get_netplan_bridge_parameters({ "bridge_ageing": 5, "bridge_maxage": 10, "bridge_stp": True, }) self.expectThat( netplan_params, Equals({ "ageing-time": 5, "max-age": 10, "stp": True, }))
def test_skips_and_logs_unknown_parameters(self): with TwistedLoggerFixture() as logger: netplan_params = get_netplan_bridge_parameters({ "xbridge_ageing": 5, "bridge_maxage": 10, "xbridge_stp": True }) self.assertThat( logger.output, DocTestMatches( dedent("""\ ...unknown bridge option...""")), ) self.expectThat(netplan_params, Equals({"max-age": 10}))
def _generate_bridge_operation(self, version=1): """Generate bridge operation for this interface.""" addrs = self._generate_addresses(version=version) bridge_operation = self._get_initial_params() if version == 1: bridge_operation.update({ "id": self.name, "type": "bridge", "name": self.name, "mac_address": str(self.iface.mac_address), "bridge_interfaces": [ parent.get_name() for parent in self.iface.parents.order_by("name") ], "params": self._get_bridge_params(version=version), }) if addrs: bridge_operation["subnets"] = addrs elif version == 2: bridge_operation.update({ "macaddress": str(self.iface.mac_address), "interfaces": [ parent.get_name() for parent in self.iface.parents.order_by("name") ], }) if self.iface.params: bridge_type = self.iface.params.get("bridge_type", BRIDGE_TYPE.STANDARD) if bridge_type == BRIDGE_TYPE.OVS: bridge_operation.update({"renderer": "openvswitch"}) bridge_params = get_netplan_bridge_parameters( self._get_bridge_params(version=version)) if len(bridge_params) > 0: bridge_operation["parameters"] = bridge_params bridge_operation.update(addrs) return bridge_operation