Search in sources :

Example 11 with XtrId

use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId in project lispflowmapping by opendaylight.

the class SimpleMapCache method addMapping.

@Override
public void addMapping(Eid key, XtrId xtrId, Object value) {
    Eid eid = MaskUtil.normalize(key);
    ILispDAO table = getOrInstantiateVniTable(key);
    ILispDAO xtrIdDao = getOrInstantiateXtrIdTable(eid, table);
    xtrIdDao.put(xtrId, new MappingEntry<>(SubKeys.RECORD, value));
}
Also used : Eid(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid) ILispDAO(org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO)

Example 12 with XtrId

use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId in project lispflowmapping by opendaylight.

the class SimpleMapCache method removeXtrIdMappings.

@Override
public void removeXtrIdMappings(Eid eid, List<XtrId> xtrIds) {
    ILispDAO table = getVniTable(eid);
    if (table == null) {
        return;
    }
    Eid key = MaskUtil.normalize(eid);
    ILispDAO xtrIdTable = (ILispDAO) table.getSpecific(key, SubKeys.XTRID_RECORDS);
    if (xtrIdTable == null) {
        return;
    }
    for (XtrId xtrId : xtrIds) {
        xtrIdTable.removeSpecific(xtrId, SubKeys.RECORD);
    }
    if (xtrIdTable.isEmpty()) {
        table.removeSpecific(key, SubKeys.XTRID_RECORDS);
        if (table.isEmpty()) {
            removeVniTable(eid);
        }
    }
}
Also used : Eid(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid) ILispDAO(org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO) XtrId(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId)

Example 13 with XtrId

use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId in project lispflowmapping by opendaylight.

the class MappingSystem method addMapping.

private void addMapping(MappingOrigin origin, Eid key, MappingData mappingData, MappingChange changeType) {
    sbMappingTimeoutService.removeExpiredMappings();
    if (mappingData == null) {
        LOG.warn("addMapping() called with null mapping, ignoring");
        return;
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("DAO: Adding {} mapping for EID {}", origin, LispAddressStringifier.getString(key));
    }
    if (LOG.isTraceEnabled()) {
        LOG.trace("mappingData = {}", mappingData.getString());
    }
    // Save the old mapping for the key before we modify anything, so that we can detect changes later
    final MappingRecord oldMapping = getMappingRecord(getMapping(key));
    if (origin == MappingOrigin.Southbound) {
        XtrId xtrId = mappingData.getXtrId();
        if (xtrId == null && mappingMerge && mappingData.isMergeEnabled()) {
            LOG.warn("addMapping() called will null xTR-ID in MappingRecord, while merge is set, ignoring");
            return;
        }
        if (xtrId != null && mappingMerge) {
            if (mappingData.isMergeEnabled()) {
                smc.addMapping(key, xtrId, mappingData);
                handleMergedMapping(key);
                return;
            } else {
                clearPresentXtrIdMappings(key);
                smc.addMapping(key, xtrId, mappingData);
            }
        }
        addOrRefreshMappingInTimeoutService(key, mappingData);
    }
    tableMap.get(origin).addMapping(key, mappingData);
    // We need to check if the newly added mapping is covering negatives in SB, and remove those (with notification)
    if (mappingData.isPositive().or(true)) {
        handleSbNegativeMappings(key);
    }
    MappingRecord newMapping = getMappingRecord(getMapping(key));
    handleAddMappingNotifications(origin, key, mappingData, oldMapping, newMapping, changeType);
}
Also used : MappingRecord(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord) XtrId(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId)

Example 14 with XtrId

use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId in project lispflowmapping by opendaylight.

the class MappingSystemTest method getMappingTest_NbSbIntersection_mergeMappings.

/**
 * Tests {@link MappingSystem#getMapping} method, northbound and southbound intersection with single Ipv4 type
 * locator, southbound non-null. Returns the merged mapping.
 */
@Test
public void getMappingTest_NbSbIntersection_mergeMappings() throws NoSuchFieldException, IllegalAccessException {
    setLookupPolicy(IMappingService.LookupPolicy.NB_AND_SB);
    final MappingRecord mappingRecord = getDefaultMappingRecordBuilder().setLocatorRecord(Lists.newArrayList(getDefaultLocatorRecordBuilder().build())).build();
    final MappingData nbMappingData = getDefaultMappingData(mappingRecord);
    final MappingData sbMappingData = getDefaultMappingData(mappingRecord);
    // this mock will be ultimately returned when MappingMergeUtil.computeNbSbIntersection is called
    final MappingData resultMock = Mockito.mock(MappingData.class);
    PowerMockito.mockStatic(MappingMergeUtil.class);
    Mockito.when(pmcMock.getMapping(EID_IPV4_SRC, EID_IPV4_DST)).thenReturn(nbMappingData);
    Mockito.when(smcMock.getMapping(EID_IPV4_DST, (XtrId) null)).thenReturn(sbMappingData);
    PowerMockito.when(MappingMergeUtil.computeNbSbIntersection(nbMappingData, sbMappingData)).thenReturn(resultMock);
    assertEquals(resultMock, mappingSystem.getMapping(EID_IPV4_SRC, EID_IPV4_DST));
}
Also used : MappingRecord(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord) MappingData(org.opendaylight.lispflowmapping.lisp.type.MappingData) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 15 with XtrId

use of org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId in project lispflowmapping by opendaylight.

the class DataStoreBackEnd method addXtrIdMapping.

// This method assumes that it is only called for southbound originated Map-Registers
public void addXtrIdMapping(XtrIdMapping mapping) {
    XtrId xtrId = mapping.getMappingRecord().getXtrId();
    Preconditions.checkNotNull(xtrId, "Make sure you only call addXtrIdMapping when the MappingRecord " + "contains an xTR-ID");
    if (LOG.isDebugEnabled()) {
        LOG.debug("MD-SAL: Adding mapping for {}, xTR-ID {}", LispAddressStringifier.getString(mapping.getMappingRecord().getEid()), xtrId);
    }
    InstanceIdentifier<XtrIdMapping> path = InstanceIdentifierUtil.createXtrIdMappingIid(mapping.getMappingRecord().getEid(), MappingOrigin.Southbound, xtrId);
    writePutTransaction(path, mapping, LogicalDatastoreType.OPERATIONAL, "Adding xTR-ID mapping to MD-SAL datastore failed");
}
Also used : XtrIdMapping(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.mapping.XtrIdMapping) XtrId(org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId)

Aggregations

XtrId (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId)10 MappingRecordBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecordBuilder)5 Test (org.junit.Test)4 MappingData (org.opendaylight.lispflowmapping.lisp.type.MappingData)4 SiteId (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.SiteId)4 MappingRecord (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.container.MappingRecord)4 ArrayList (java.util.ArrayList)3 Eid (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid)3 MappingRecordItem (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItem)3 MappingRecordItemBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapping.record.list.MappingRecordItemBuilder)3 EidUri (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.EidUri)3 Mapping (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.Mapping)3 XtrIdMapping (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.mapping.XtrIdMapping)3 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)3 ILispDAO (org.opendaylight.lispflowmapping.interfaces.dao.ILispDAO)2 LispSerializationException (org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException)2 MapRegisterBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapregisternotification.MapRegisterBuilder)2 MappingBuilder (org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.mappingservice.rev150906.db.instance.MappingBuilder)2 ByteBuffer (java.nio.ByteBuffer)1 Date (java.util.Date)1