import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.groupbasedpolicy.renderer.vpp.iface.VppPathMapper;
-import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.LispState;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.info.container.EndpointHost;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.info.container.HostRelatedInfoContainer;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.info.container.states.LispState;
import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.LispStateManager;
import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.exception.LispNotFoundException;
-import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.mappers.HostIdToInterfaceInfoMapper;
+import org.opendaylight.groupbasedpolicy.renderer.vpp.lisp.info.container.states.PhysicalInterfaces;
import org.opendaylight.groupbasedpolicy.renderer.vpp.util.GbpNetconfTransaction;
import org.opendaylight.groupbasedpolicy.renderer.vpp.util.LispUtil;
import org.opendaylight.groupbasedpolicy.renderer.vpp.util.MountedDataBrokerProvider;
public class ConfigManagerHelper {
private static final Logger LOG = LoggerFactory.getLogger(ConfigManagerHelper.class);
- private static final String TENANT_INTERFACE = "tenant-interface";
private MountedDataBrokerProvider mountedDataBrokerProvider;
public ConfigManagerHelper(MountedDataBrokerProvider mountedDataBrokerProvider) {
this.mountedDataBrokerProvider = mountedDataBrokerProvider;
}
+ public EndpointHost getEndpointHostInformation(AddressEndpointWithLocation addressEpWithLoc) {
+ DataBroker endpointHostDataBroker = getPotentialExternalDataBroker(addressEpWithLoc).get();
+ String hostName = getHostName(addressEpWithLoc).get();
+ return new EndpointHost(endpointHostDataBroker, hostName);
+ }
+
public Optional<DataBroker> getPotentialExternalDataBroker(AddressEndpointWithLocation addressEpWithLoc) {
ExternalLocationCase externalLocationCase = resolveAndValidateLocation(addressEpWithLoc);
InstanceIdentifier<?> vppNodeIid = externalLocationCase.getExternalNodeMountPoint();
String interfacePath = externalLocationCase.getExternalNodeConnector();
- Optional<DataBroker> potentialVppDataProvider = mountedDataBrokerProvider.getDataBrokerForMountPoint(vppNodeIid);
+ Optional<DataBroker>
+ potentialVppDataProvider = mountedDataBrokerProvider.getDataBrokerForMountPoint(vppNodeIid);
Preconditions.checkArgument(potentialVppDataProvider.isPresent(),
"Cannot resolve data broker for interface path: {}", interfacePath);
Preconditions.checkNotNull(hostName, "Hostname is null!");
Preconditions.checkNotNull(vppDataBroker, "Vpp DataBroker is null!");
- String publicInterfaceName = HostIdToInterfaceInfoMapper.getInstance()
- .getInterfaceInfo(hostName, HostIdToInterfaceInfoMapper.InterfaceType.PUBLIC).getInterfaceName();
+ PhysicalInterfaces physicalInterfaces = HostRelatedInfoContainer.getInstance()
+ .getPhysicalInterfaceState(hostName);
+
+ String publicInterfaceName = physicalInterfaces == null ? "" : physicalInterfaces
+ .getName(PhysicalInterfaces.PhysicalInterfaceType.PUBLIC);
final Optional<InterfacesState> opInterfaceState = GbpNetconfTransaction.read(vppDataBroker,
LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(InterfacesState.class),
for (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.
interfaces.Interface intf : hostInterfaceFromOpDS) {
- if (TENANT_INTERFACE.equals(intf.getDescription())
+ if (Constants.TENANT_INTERFACE.equals(intf.getDescription())
&& ipAddressPresent(intf)
&& intf.getType().equals(EthernetCsmacd.class)) {
return Futures.immediateFuture(intf.getName());
return LispStateManager.DEFAULT_LOCATOR_SET_NAME_PREFIX + (locatorSetCount + 1);
}
- public String constructMappingName(int presentMappingCount) {
- return LispStateManager.DEFAULT_MAPPINGRECORD_NAME_PREFIX + (presentMappingCount + 1);
+ public String constructEidMappingName(AddressEndpointWithLocation addressEp) {
+ String interfaceName = getInterfaceName(addressEp).get();
+ String ipAddress = getInterfaceIp(addressEp).getValue();
+ return LispStateManager.DEFAULT_MAPPINGRECORD_NAME_PREFIX + interfaceName + "_" + ipAddress;
}
public String getSubnet(AddressEndpointWithLocation addressEp) {
"in address endpoint: " + addressEp);
}
- public boolean isMetadataPort(AddressEndpointWithLocation addedEp) {
+ public boolean hasRelativeLocations(AddressEndpointWithLocation addedEp) {
return addedEp.getRelativeLocations() != null && addedEp.getRelativeLocations().getExternalLocation() != null;
}
+ public boolean isMetadataPort(AddressEndpointWithLocation addressEp) {
+ return hasRelativeLocations(addressEp) || IpAddressUtil.isMetadataIp(getInterfaceIp(addressEp));
+ }
+
+ public String getGatewayInterfaceName(String gwNamePrefix, String subnetUuid) {
+ return gwNamePrefix + subnetUuid;
+ }
+
public Routing getRouting(long vrf) {
return new RoutingBuilder().setIpv4VrfId(vrf).build();
}