Search in sources :

Example 1 with VplsData

use of org.onosproject.vpls.api.VplsData in project onos by opennetworkinglab.

the class VplsManager method removeInterfaces.

@Override
public Collection<Interface> removeInterfaces(VplsData vplsData, Collection<Interface> interfaces) {
    requireNonNull(vplsData);
    requireNonNull(interfaces);
    VplsData newData = VplsData.of(vplsData);
    newData.removeInterfaces(interfaces);
    updateVplsStatus(newData, VplsData.VplsState.UPDATING);
    return interfaces;
}
Also used : VplsData(org.onosproject.vpls.api.VplsData)

Example 2 with VplsData

use of org.onosproject.vpls.api.VplsData in project onos by opennetworkinglab.

the class VplsManager method setEncapsulationType.

@Override
public void setEncapsulationType(VplsData vplsData, EncapsulationType encapsulationType) {
    requireNonNull(vplsData);
    requireNonNull(encapsulationType);
    VplsData newData = VplsData.of(vplsData);
    if (newData.encapsulationType().equals(encapsulationType)) {
        // Encap type not changed.
        return;
    }
    newData.encapsulationType(encapsulationType);
    updateVplsStatus(newData, VplsData.VplsState.UPDATING);
}
Also used : VplsData(org.onosproject.vpls.api.VplsData)

Example 3 with VplsData

use of org.onosproject.vpls.api.VplsData in project onos by opennetworkinglab.

the class VplsNeighbourHandler method findVpls.

/**
 * Finds the VPLS with given neighbour message context.
 *
 * @param context the neighbour message context
 * @return the VPLS for specific neighbour message context
 */
private VplsData findVpls(NeighbourMessageContext context) {
    Collection<VplsData> vplses = vplsStore.getAllVpls();
    for (VplsData vplsData : vplses) {
        Set<Interface> interfaces = vplsData.interfaces();
        ConnectPoint port = context.inPort();
        VlanId vlanId = context.vlan();
        boolean match = interfaces.stream().anyMatch(iface -> iface.connectPoint().equals(port) && iface.vlan().equals(vlanId));
        if (match) {
            return vplsData;
        }
    }
    return null;
}
Also used : VplsData(org.onosproject.vpls.api.VplsData) ConnectPoint(org.onosproject.net.ConnectPoint) Interface(org.onosproject.net.intf.Interface) VlanId(org.onlab.packet.VlanId)

Example 4 with VplsData

use of org.onosproject.vpls.api.VplsData in project onos by opennetworkinglab.

the class VplsCommand method setEncap.

/**
 * Sets the encapsulation type for a VPLS.
 *
 * @param vplsName the name of the VPLS
 * @param encap the encapsulation type
 */
protected void setEncap(String vplsName, String encap) {
    if (vplsName == null) {
        print(INSERT_VPLS_NAME);
        return;
    }
    if (encap == null) {
        print(INSERT_ENCAP_TYPE);
        return;
    }
    VplsData vplsData = vpls.getVpls(vplsName);
    if (vplsData == null) {
        print(VPLS_NOT_FOUND, vplsName);
        return;
    }
    EncapsulationType encapType = EncapsulationType.enumFromString(encap);
    if (encapType.equals(EncapsulationType.NONE) && !encapType.toString().equals(encap)) {
        print(ENCAP_NOT_FOUND, encap);
        return;
    }
    vpls.setEncapsulationType(vplsData, encapType);
}
Also used : EncapsulationType(org.onosproject.net.EncapsulationType) VplsData(org.onosproject.vpls.api.VplsData)

Example 5 with VplsData

use of org.onosproject.vpls.api.VplsData in project onos by opennetworkinglab.

the class VplsCommand method addIface.

/**
 * Adds an inteterface to a VPLS.
 *
 * @param vplsName the name of the VLPS
 * @param ifaceName the name of the interface to add
 */
protected void addIface(String vplsName, String ifaceName) {
    if (vplsName == null) {
        print(INSERT_VPLS_NAME);
        return;
    }
    if (ifaceName == null) {
        print(INSERT_INTERFACE);
        return;
    }
    Interface iface = getInterface(ifaceName);
    VplsData vplsData = vpls.getVpls(vplsName);
    if (vplsData == null) {
        print(VPLS_NOT_FOUND, vplsName);
        return;
    }
    if (CHANGING_STATE.contains(vplsData.state())) {
        // when a VPLS is updating, we shouldn't try modify it.
        print("VPLS %s still updating, please wait it finished", vplsData.name());
        return;
    }
    if (iface == null) {
        print(IFACE_NOT_FOUND, ifaceName);
        return;
    }
    if (isIfaceAssociated(iface)) {
        print(IFACE_ALREADY_ASSOCIATED, ifaceName, getVplsByInterface(iface).name());
        return;
    }
    vpls.addInterface(vplsData, iface);
}
Also used : VplsData(org.onosproject.vpls.api.VplsData) Interface(org.onosproject.net.intf.Interface)

Aggregations

VplsData (org.onosproject.vpls.api.VplsData)73 Test (org.junit.Test)44 VplsOperation (org.onosproject.vpls.api.VplsOperation)18 VplsTest (org.onosproject.vpls.VplsTest)11 ArrayDeque (java.util.ArrayDeque)10 Interface (org.onosproject.net.intf.Interface)10 Vpls (org.onosproject.vpls.api.Vpls)7 NetworkConfigEvent (org.onosproject.net.config.NetworkConfigEvent)6 Path (javax.ws.rs.Path)4 Produces (javax.ws.rs.Produces)4 Host (org.onosproject.net.Host)4 HostEvent (org.onosproject.net.host.HostEvent)4 Intent (org.onosproject.net.intent.Intent)4 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)3 IOException (java.io.IOException)3 ArrayList (java.util.ArrayList)3 Objects (java.util.Objects)3 Set (java.util.Set)3 Collectors (java.util.stream.Collectors)3 MacAddress (org.onlab.packet.MacAddress)3