use of org.openkilda.messaging.command.flow.ReinstallDefaultFlowForSwitchManagerRequest in project open-kilda by telstra.
the class ControllerToSpeakerSharedProxyBolt method handleRegionNotFoundError.
private void handleRegionNotFoundError(CommandMessage commandMessage, SwitchId switchId) {
String errorDetails = String.format("Switch %s not found", switchId.toString());
ErrorData errorData = new ErrorData(ErrorType.NOT_FOUND, errorDetails, errorDetails);
ErrorMessage errorMessage = new ErrorMessage(errorData, System.currentTimeMillis(), commandMessage.getCorrelationId(), null);
Tuple input = getCurrentTuple();
if (commandMessage.getData() instanceof DumpRulesForFlowHsRequest || commandMessage.getData() instanceof DumpMetersForFlowHsRequest) {
MessageContext messageContext = new MessageContext(commandMessage);
SpeakerDataResponse result = new SpeakerDataResponse(messageContext, errorData);
// FIXME(surabujin): there is no subscriber on this stream now
getOutput().emit(Stream.FLOWHS_WORKER, input, makeFlowHsWorkerTuple(commandMessage.getCorrelationId(), result));
} else if (commandMessage.getData() instanceof DumpRulesForSwitchManagerRequest || commandMessage.getData() instanceof DumpMetersForSwitchManagerRequest || commandMessage.getData() instanceof InstallFlowForSwitchManagerRequest || commandMessage.getData() instanceof RemoveFlowForSwitchManagerRequest || commandMessage.getData() instanceof ReinstallDefaultFlowForSwitchManagerRequest) {
getOutput().emit(Stream.KILDA_SWITCH_MANAGER, input, makeSwitchManagerTuple(commandMessage.getCorrelationId(), errorMessage));
} else if (commandMessage.getData() instanceof DumpSwitchPortsDescriptionRequest || commandMessage.getData() instanceof DumpPortDescriptionRequest || commandMessage.getData() instanceof DumpRulesRequest || commandMessage.getData() instanceof DumpMetersRequest || commandMessage.getData() instanceof DeleteMeterRequest || commandMessage.getData() instanceof PortConfigurationRequest) {
getOutput().emit(Stream.NORTHBOUND_REPLY, input, makeNorthboundTuple(commandMessage.getCorrelationId(), errorMessage));
} else {
log.error("Unable to lookup region for message: {}. switch is not tracked.", commandMessage);
}
}
use of org.openkilda.messaging.command.flow.ReinstallDefaultFlowForSwitchManagerRequest in project open-kilda by telstra.
the class CommandBuilderImplTest method reinstallServer42RuleTest.
@Test
public void reinstallServer42RuleTest() {
List<ReinstallDefaultFlowForSwitchManagerRequest> commands = commandBuilder.buildCommandsToReinstallRules(SWITCH_ID_A, Lists.newArrayList(Cookie.SERVER_42_FLOW_RTT_OUTPUT_VLAN_COOKIE));
assertEquals(1, commands.size());
assertEquals(ReinstallServer42FlowForSwitchManagerRequest.class, commands.get(0).getClass());
ReinstallServer42FlowForSwitchManagerRequest server42Command = (ReinstallServer42FlowForSwitchManagerRequest) commands.get(0);
assertEquals(SERVER42_MAC_ADDRESS, server42Command.getServer42MacAddress());
assertEquals(SERVER42_PORT, server42Command.getServer42Port());
assertEquals(SERVER42_VLAN, server42Command.getServer42Vlan());
}
use of org.openkilda.messaging.command.flow.ReinstallDefaultFlowForSwitchManagerRequest in project open-kilda by telstra.
the class SwitchSyncFsm method sendRulesCommands.
protected void sendRulesCommands(SwitchSyncState from, SwitchSyncState to, SwitchSyncEvent event, Object context) {
if (missingRules.isEmpty() && excessRules.isEmpty() && misconfiguredRules.isEmpty()) {
log.info("Nothing to do with rules (switch={}, key={})", switchId, key);
fire(NEXT);
return;
}
if (!missingRules.isEmpty()) {
log.info("Request to install switch rules has been sent (switch={}, key={})", switchId, key);
missingRulesPendingResponsesCount = missingRules.size();
for (BaseFlow command : missingRules) {
carrier.sendCommandToSpeaker(key, new InstallFlowForSwitchManagerRequest(command));
}
}
if (!excessRules.isEmpty()) {
log.info("Request to remove switch rules has been sent (switch={}, key={})", switchId, key);
excessRulesPendingResponsesCount = excessRules.size();
for (RemoveFlow command : excessRules) {
carrier.sendCommandToSpeaker(key, new RemoveFlowForSwitchManagerRequest(switchId, command));
}
}
if (!misconfiguredRules.isEmpty()) {
log.info("Request to reinstall default switch rules has been sent (switch={}, key={})", switchId, key);
reinstallDefaultRulesPendingResponsesCount = misconfiguredRules.size();
for (ReinstallDefaultFlowForSwitchManagerRequest command : misconfiguredRules) {
carrier.sendCommandToSpeaker(key, command);
}
}
continueIfRulesSynchronized();
}
use of org.openkilda.messaging.command.flow.ReinstallDefaultFlowForSwitchManagerRequest in project open-kilda by telstra.
the class CommandBuilderImpl method buildCommandsToReinstallRules.
@Override
public List<ReinstallDefaultFlowForSwitchManagerRequest> buildCommandsToReinstallRules(SwitchId switchId, List<Long> reinstallRulesCookies) {
SwitchProperties properties = getSwitchProperties(switchId);
List<ReinstallDefaultFlowForSwitchManagerRequest> commands = new ArrayList<>();
for (Long cookie : reinstallRulesCookies) {
if (isDefaultRuleWithSpecialRequirements(cookie)) {
commands.add(new ReinstallServer42FlowForSwitchManagerRequest(switchId, cookie, properties.getServer42MacAddress(), properties.getServer42Vlan(), properties.getServer42Port()));
} else {
commands.add(new ReinstallDefaultFlowForSwitchManagerRequest(switchId, cookie));
}
}
return commands;
}
use of org.openkilda.messaging.command.flow.ReinstallDefaultFlowForSwitchManagerRequest in project open-kilda by telstra.
the class RecordHandler method handleCommand.
@VisibleForTesting
void handleCommand(CommandMessage message) {
logger.debug("Handling message: '{}'.", message);
CommandData data = message.getData();
if (data instanceof DiscoverIslCommandData) {
doDiscoverIslCommand((DiscoverIslCommandData) data, message.getCorrelationId());
} else if (data instanceof DiscoverPathCommandData) {
doDiscoverPathCommand(data);
} else if (data instanceof RemoveFlowForSwitchManagerRequest) {
doDeleteFlowForSwitchManager(message);
} else if (data instanceof ModifyFlowMeterForSwitchManagerRequest) {
doModifyFlowMeterForSwitchManager(message);
} else if (data instanceof ModifyDefaultMeterForSwitchManagerRequest) {
doModifyDefaultMeterForSwitchManager(message);
} else if (data instanceof ReinstallDefaultFlowForSwitchManagerRequest) {
doReinstallDefaultFlowForSwitchManager(message);
} else if (data instanceof NetworkCommandData) {
doNetworkDump((NetworkCommandData) data);
} else if (data instanceof SwitchRulesDeleteRequest) {
doDeleteSwitchRules(message);
} else if (data instanceof SwitchRulesInstallRequest) {
doInstallSwitchRules(message);
} else if (data instanceof DumpRulesForFlowHsRequest) {
doDumpRulesForFlowHsRequest(message);
} else if (data instanceof DumpRulesRequest) {
doDumpRulesRequest(message);
} else if (data instanceof DumpRulesForSwitchManagerRequest) {
doDumpRulesForSwitchManagerRequest(message);
} else if (data instanceof InstallFlowForSwitchManagerRequest) {
doInstallFlowForSwitchManager(message);
} else if (data instanceof DeleterMeterForSwitchManagerRequest) {
doDeleteMeter(message, context.getKafkaSwitchManagerTopic());
} else if (data instanceof DeleteMeterRequest) {
doDeleteMeter(message, context.getKafkaNorthboundTopic());
} else if (data instanceof PortConfigurationRequest) {
doConfigurePort(message);
} else if (data instanceof DumpSwitchPortsDescriptionRequest) {
doDumpSwitchPortsDescriptionRequest(message);
} else if (data instanceof DumpPortDescriptionRequest) {
doDumpPortDescriptionRequest(message);
} else if (data instanceof DumpMetersRequest) {
doDumpMetersRequest(message);
} else if (data instanceof DumpMetersForSwitchManagerRequest) {
doDumpMetersForSwitchManagerRequest(message);
} else if (data instanceof DumpMetersForFlowHsRequest) {
doDumpMetersForFlowHsRequest(message);
} else if (data instanceof MeterModifyCommandRequest) {
doModifyMeterRequest(message);
} else if (data instanceof AliveRequest) {
doAliveRequest(message);
} else if (data instanceof InstallIslDefaultRulesCommand) {
doInstallIslDefaultRule(message);
} else if (data instanceof RemoveIslDefaultRulesCommand) {
doRemoveIslDefaultRule(message);
} else if (data instanceof DumpGroupsForSwitchManagerRequest) {
doDumpGroupsForSwitchManagerRequest(message);
} else if (data instanceof DumpGroupsForFlowHsRequest) {
doDumpGroupsForFlowHsRequest(message);
} else if (data instanceof InstallGroupRequest) {
doInstallGroupRequest(message);
} else if (data instanceof ModifyGroupRequest) {
doModifyGroupRequest(message);
} else if (data instanceof DeleteGroupRequest) {
doDeleteGroupRequest(message);
} else if (data instanceof BroadcastWrapper) {
handleBroadcastCommand(message, (BroadcastWrapper) data);
} else {
handlerNotFound(data);
}
}
Aggregations