import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.controller.md.sal.common.api.data.TransactionChain;\r
import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener;\r
-import org.opendaylight.groupbasedpolicy.neutron.vpp.mapper.SocketInfo;\r
import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;\r
import com.google.common.annotations.VisibleForTesting;\r
import com.google.common.base.Optional;\r
\r
+import javax.annotation.Nonnull;\r
public class PortHandler implements TransactionChainListener {\r
\r
private static final Logger LOG = LoggerFactory.getLogger(PortHandler.class);\r
private static final String VPP_INTERFACE_NAME_PREFIX = "neutron_port_";\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
\r
private BindingTransactionChain transactionChain;\r
private DataBroker dataBroker;\r
- private SocketInfo socketInfo;\r
\r
- PortHandler(DataBroker dataBroker, SocketInfo socketInfo) {\r
+ PortHandler(DataBroker dataBroker) {\r
this.dataBroker = dataBroker;\r
- this.socketInfo = socketInfo;\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
- String socket = socketInfo.getSocketPath() + socketInfo.getSocketPrefix() + bebp.getPortId().getValue();\r
- vppEpBuilder.setInterfaceTypeChoice(new VhostUserCaseBuilder().setSocket(socket).build());\r
+ vppEpBuilder.setInterfaceTypeChoice(\r
+ new VhostUserCaseBuilder().setSocket(getSocketFromPortBinding(portBinding)).build());\r
} else if (port.getDeviceOwner().contains(DHCP_OWNER) && port.getMacAddress() != null) {\r
TapCase tapCase = new TapCaseBuilder().setPhysicalAddress(new PhysAddress(port.getMacAddress().getValue()))\r
.setName(createPortName(port.getUuid()))\r
return vppEpBuilder.build();\r
}\r
\r
+ private String getSocketFromPortBinding(@Nonnull PortBindingExtension portBindingExtension) {\r
+ List<VifDetails> vifDetails = nullToEmpty(portBindingExtension.getVifDetails());\r
+\r
+ for (VifDetails detail : vifDetails) {\r
+ if (VHOST_SOCKET_KEY.equalsIgnoreCase(detail.getDetailsKey())) {\r
+ return detail.getValue();\r
+ }\r
+ }\r
+ return null;\r
+ }\r
+\r
private LoopbackCase getLoopbackCase(Port port) {\r
LoopbackCaseBuilder loopbackCase = new LoopbackCaseBuilder()\r
.setPhysAddress(new PhysAddress(port.getMacAddress().getValue()));\r