Search in sources :

Example 1 with Flow

use of org.openkilda.topology.domain.Flow in project open-kilda by telstra.

the class FlowServiceImplTest method updateFlow.

@Test
public void updateFlow() throws Exception {
    long updatedBandwidth = 20000L;
    FlowEndpointPayload firstEndpoint = new FlowEndpointPayload(srcSwitchId, 10, 100);
    FlowEndpointPayload secondEndpoint = new FlowEndpointPayload(dstSwitchId, 20, 100);
    FlowPayload flowPayload = new FlowPayload(flowId, 0L, secondEndpoint, firstEndpoint, 10000L, "", "", OutputVlanType.NONE);
    FlowPayload newFlowPayload = new FlowPayload(flowId, 0L, secondEndpoint, firstEndpoint, updatedBandwidth, "", "", OutputVlanType.NONE);
    flowService.createFlow(flowPayload, DEFAULT_CORRELATION_ID);
    flowService.updateFlow(newFlowPayload, DEFAULT_CORRELATION_ID);
    Set<Flow> flows = flowRepository.findByFlowId(flowId);
    assertNotNull(flows);
    assertFalse(flows.isEmpty());
    assertEquals(2, flows.size());
    for (Flow flow : flowRepository.findAll()) {
        assertEquals(flowId, flow.getFlowId());
        assertEquals(updatedBandwidth, flow.getBandwidth());
    }
}
Also used : FlowPayload(org.openkilda.messaging.payload.flow.FlowPayload) FlowEndpointPayload(org.openkilda.messaging.payload.flow.FlowEndpointPayload) Flow(org.openkilda.topology.domain.Flow) Test(org.junit.Test)

Example 2 with Flow

use of org.openkilda.topology.domain.Flow in project open-kilda by telstra.

the class FlowServiceImpl method pathFlow.

/**
 * {@inheritDoc}
 */
@Override
public InfoMessage pathFlow(final FlowIdStatusPayload payload, final String correlationId) {
    Set<Flow> flows = flowRepository.findByFlowId(payload.getId());
    FlowPathPayload flowPathPayload = null;
    for (Flow flow : flows) {
        if ((flow.getCookie() & DIRECT_FLOW_COOKIE) == DIRECT_FLOW_COOKIE) {
            flowPathPayload = new FlowPathPayload(flow.getFlowId(), flow.getFlowPath());
        }
    }
    logger.debug("Flow with id={} path: {}", payload.getId(), flowPathPayload);
    return new InfoMessage(new FlowPathResponse(flowPathPayload), System.currentTimeMillis(), correlationId, Destination.WFM);
}
Also used : FlowPathResponse(org.openkilda.messaging.info.flow.FlowPathResponse) InfoMessage(org.openkilda.messaging.info.InfoMessage) FlowPathPayload(org.openkilda.messaging.payload.flow.FlowPathPayload) Flow(org.openkilda.topology.domain.Flow)

Example 3 with Flow

use of org.openkilda.topology.domain.Flow in project open-kilda by telstra.

the class FlowServiceImpl method buildFlow.

/**
 * Creates flow for further saving in database.
 *
 * @return {@link ImmutablePair} of direct and reverse {@link Flow} instances
 */
private Flow buildFlow(final List<Isl> path, final Switch source, final Switch destination, final FlowPayload payload, final int transitVlanId, final long cookie) {
    List<String> pathToStore = new ArrayList<>(path.size() + 1);
    pathToStore.add(payload.getSource().getSwitchId());
    for (Isl isl : path) {
        pathToStore.add(isl.getDestinationSwitch());
    }
    Flow flow = new Flow(source, destination, payload.getId(), cookie, pathToStore, payload.getMaximumBandwidth(), payload.getSource().getSwitchId(), payload.getSource().getPortId(), payload.getSource().getVlanId(), payload.getDestination().getSwitchId(), payload.getDestination().getPortId(), payload.getDestination().getVlanId(), payload.getDescription(), getTime(), transitVlanId);
    logger.debug("Flow prepared: flow={}", flow);
    return flow;
}
Also used : Isl(org.openkilda.topology.domain.Isl) ArrayList(java.util.ArrayList) Flow(org.openkilda.topology.domain.Flow)

Example 4 with Flow

use of org.openkilda.topology.domain.Flow in project open-kilda by telstra.

the class FlowServiceImpl method getFlow.

/**
 * {@inheritDoc}
 */
@Override
public InfoMessage getFlow(final FlowIdStatusPayload payload, final String correlationId) {
    Set<Flow> flows = flowRepository.findByFlowId(payload.getId());
    if (flows == null || flows.isEmpty()) {
        logger.error("Flow with id={} not found", payload.getId());
        throw new MessageException(ErrorType.NOT_FOUND, System.currentTimeMillis());
    }
    FlowResponse response = null;
    for (Flow flow : flows) {
        if ((flow.getCookie() & DIRECT_FLOW_COOKIE) == DIRECT_FLOW_COOKIE) {
            response = new FlowResponse(getFlowPayloadByFlow(flow));
        }
    }
    logger.debug("Flow with id={} get: {}", payload.getId(), response);
    return new InfoMessage(response, System.currentTimeMillis(), correlationId, Destination.WFM);
}
Also used : MessageException(org.openkilda.messaging.error.MessageException) InfoMessage(org.openkilda.messaging.info.InfoMessage) FlowResponse(org.openkilda.messaging.info.flow.FlowResponse) Flow(org.openkilda.topology.domain.Flow)

Example 5 with Flow

use of org.openkilda.topology.domain.Flow in project open-kilda by telstra.

the class FlowServiceImplTest method deleteFlow.

@Test
public void deleteFlow() throws Exception {
    FlowEndpointPayload firstEndpoint = new FlowEndpointPayload(srcSwitchId, 10, 100);
    FlowEndpointPayload secondEndpoint = new FlowEndpointPayload(dstSwitchId, 20, 100);
    FlowPayload flowPayload = new FlowPayload(flowId, 0L, secondEndpoint, firstEndpoint, 10000L, "", "", OutputVlanType.NONE);
    FlowIdStatusPayload flowIdStatusPayload = new FlowIdStatusPayload(flowId);
    flowService.createFlow(flowPayload, DEFAULT_CORRELATION_ID);
    flowService.deleteFlow(flowIdStatusPayload, DEFAULT_CORRELATION_ID);
    Set<Flow> flows = flowRepository.findByFlowId(flowId);
    assertNotNull(flows);
    assertTrue(flows.isEmpty());
}
Also used : FlowPayload(org.openkilda.messaging.payload.flow.FlowPayload) FlowIdStatusPayload(org.openkilda.messaging.payload.flow.FlowIdStatusPayload) FlowEndpointPayload(org.openkilda.messaging.payload.flow.FlowEndpointPayload) Flow(org.openkilda.topology.domain.Flow) Test(org.junit.Test)

Aggregations

Flow (org.openkilda.topology.domain.Flow)9 FlowPayload (org.openkilda.messaging.payload.flow.FlowPayload)4 Test (org.junit.Test)3 InfoMessage (org.openkilda.messaging.info.InfoMessage)3 FlowEndpointPayload (org.openkilda.messaging.payload.flow.FlowEndpointPayload)3 ArrayList (java.util.ArrayList)2 HashSet (java.util.HashSet)2 CommandMessage (org.openkilda.messaging.command.CommandMessage)2 MessageException (org.openkilda.messaging.error.MessageException)2 Isl (org.openkilda.topology.domain.Isl)2 FlowPathResponse (org.openkilda.messaging.info.flow.FlowPathResponse)1 FlowResponse (org.openkilda.messaging.info.flow.FlowResponse)1 FlowsResponse (org.openkilda.messaging.info.flow.FlowsResponse)1 FlowIdStatusPayload (org.openkilda.messaging.payload.flow.FlowIdStatusPayload)1 FlowPathPayload (org.openkilda.messaging.payload.flow.FlowPathPayload)1 FlowsPayload (org.openkilda.messaging.payload.flow.FlowsPayload)1 Switch (org.openkilda.topology.domain.Switch)1