\r
private static final String COMPUTE_OWNER = "compute";\r
private static final String DHCP_OWNER = "dhcp";\r
- private static final String ROUTER_OWNER = "network:router_interface";\r
+ static final String ROUTER_OWNER = "network:router_interface";\r
private static final String[] SUPPORTED_DEVICE_OWNERS = {COMPUTE_OWNER, DHCP_OWNER, ROUTER_OWNER};\r
private static final String VHOST_USER = "vhostuser";\r
private static final String UNBOUND = "unbound";\r
private static final String TAP_PORT_NAME_PREFIX = "tap";\r
private static final String RT_PORT_NAME_PREFIX = "qr-";\r
private static final String VHOST_SOCKET_KEY = "vhostuser_socket";\r
+ static final String DEFAULT_NODE = "default";\r
\r
+ private final NodeId routingNode;\r
private BindingTransactionChain transactionChain;\r
private DataBroker dataBroker;\r
\r
- PortHandler(DataBroker dataBroker) {\r
+ PortHandler(DataBroker dataBroker, NodeId routingNodeId) {\r
this.dataBroker = dataBroker;\r
+ this.routingNode = routingNodeId;\r
transactionChain = this.dataBroker.createTransactionChain(this);\r
}\r
\r
.setAddressType(bebp.getAddressType())\r
.setVppInterfaceName(VPP_INTERFACE_NAME_PREFIX + bebp.getPortId().getValue())\r
.setVppNodeId(new NodeId(portBinding.getHostId()));\r
-\r
if (port.getDeviceOwner().contains(COMPUTE_OWNER)) {\r
vppEpBuilder.setInterfaceTypeChoice(\r
new VhostUserCaseBuilder().setSocket(getSocketFromPortBinding(portBinding)).build());\r
.build();\r
vppEpBuilder.setInterfaceTypeChoice(tapCase);\r
} else if (isValidVppRouterPort(port)) {\r
+ if (!DEFAULT_NODE.equals(routingNode.getValue())) {\r
+ LOG.warn(\r
+ "Host-id changed by ODL for port {}. This is a supplementary workaround for choosing a routing node.",\r
+ port);\r
+ vppEpBuilder.setVppNodeId(routingNode);\r
+ }\r
vppEpBuilder.setInterfaceTypeChoice(getLoopbackCase(port));\r
}\r
return vppEpBuilder.build();\r