use of org.ovirt.engine.core.common.action.CreateOrUpdateBond in project ovirt-engine by oVirt.
the class HostSetupNetworksModel method getBondNameToSlaves.
private Map<String, List<VdsNetworkInterface>> getBondNameToSlaves() {
final Map<String, VdsNetworkInterface> nicMap = Entities.entitiesByName(allExistingNics);
Map<String, List<VdsNetworkInterface>> bondToSlaves = new HashMap<>();
for (CreateOrUpdateBond createOrUpdateBond : hostSetupNetworksParametersData.getBonds()) {
String bondName = createOrUpdateBond.getName();
// $NON-NLS-1$
assert !bondToSlaves.containsKey(bondName) : "the same bond shouldn't exist twice in the parameters";
bondToSlaves.put(bondName, new ArrayList<VdsNetworkInterface>());
Set<String> slavesNames = createOrUpdateBond.getSlaves();
for (String slaveName : slavesNames) {
bondToSlaves.get(bondName).add(nicMap.get(slaveName));
}
}
return bondToSlaves;
}
use of org.ovirt.engine.core.common.action.CreateOrUpdateBond in project ovirt-engine by oVirt.
the class HostSetupNetworksModel method onOperation.
public void onOperation(NetworkOperation operation, final NetworkCommand networkCommand) {
Model popupWindow;
UICommand cancelCommand = new UICommand("Cancel", new // $NON-NLS-1$
BaseCommandTarget() {
@Override
public void executeCommand(UICommand command) {
sourceListModel.setConfirmWindow(null);
}
});
cancelCommand.setTitle(ConstantsManager.getInstance().getConstants().cancel());
cancelCommand.setIsCancel(true);
if (operation.isNullOperation()) {
return;
} else if (operation == NetworkOperation.BOND_WITH || operation == NetworkOperation.JOIN_BONDS) {
final SetupNetworksBondModel bondPopup;
boolean doesBondHaveVmNetworkAttached = doesBondHaveVmNetworkAttached((NetworkInterfaceModel) networkCommand.getOp1(), (NetworkInterfaceModel) networkCommand.getOp2());
if (operation == NetworkOperation.BOND_WITH) {
bondPopup = new SetupNetworksAddBondModel(getFreeBonds(), nextBondName, doesBondHaveVmNetworkAttached);
} else {
bondPopup = new SetupNetworksJoinBondsModel(getFreeBonds(), (BondNetworkInterfaceModel) networkCommand.getOp1(), (BondNetworkInterfaceModel) networkCommand.getOp2(), doesBondHaveVmNetworkAttached);
}
bondPopup.getCommands().add(new UICommand("OK", new // $NON-NLS-1$
BaseCommandTarget() {
@Override
public void executeCommand(UICommand command) {
if (!bondPopup.validate()) {
return;
}
sourceListModel.setConfirmWindow(null);
CreateOrUpdateBond bond = new CreateOrUpdateBond();
bond.setName(bondPopup.getBond().getSelectedItem());
setBondOptions(bond, bondPopup);
NetworkInterfaceModel nic1 = (NetworkInterfaceModel) networkCommand.getOp1();
NetworkInterfaceModel nic2 = (NetworkInterfaceModel) networkCommand.getOp2();
// Store networks
List<LogicalNetworkModel> networks = new ArrayList<>();
networks.addAll(nic1.getItems());
networks.addAll(nic2.getItems());
// Store labels
List<NetworkLabelModel> labels = new ArrayList<>();
labels.addAll(nic1.getLabels());
labels.addAll(nic2.getLabels());
networkCommand.execute(bond);
/*
* We are calling the <code>redraw()</code> to create the BondModel which is needed by the following
* operations (attaching the networks and the labels to the bond).
*
* For more details @see #redraw. After executing the <code>networkCommand</code> which creates the
* bond, the bondModel still not exist (only the <code>hostSetupNetworksParametersData.bonds</code>
* are updated). <code>redraw()</code> has to be called to create it.
*/
redraw();
// Attach the previous networks
attachNetworks(bond.getName(), networks);
// Attach previous labels
attachLabels(bond.getName(), labels);
redraw();
}
}));
popupWindow = bondPopup;
} else if (networkCommand.getOp1() == getNewNetworkLabelModel()) {
final SetupNetworksLabelModel labelPopup = new SetupNetworksLabelModel(dcLabels);
labelPopup.getCommands().add(new UICommand("OK", new // $NON-NLS-1$
BaseCommandTarget() {
@Override
public void executeCommand(UICommand uiCommand) {
if (!labelPopup.validate()) {
return;
}
sourceListModel.setConfirmWindow(null);
String label = labelPopup.getLabel().getEntity();
dcLabels.add(label);
NetworkOperation.LABEL.getCommand(new NetworkLabelModel(label, HostSetupNetworksModel.this), networkCommand.getOp2(), hostSetupNetworksParametersData).execute();
redraw();
}
}));
popupWindow = labelPopup;
} else {
// just execute the command
networkCommand.execute();
redraw();
return;
}
// add cancel
popupWindow.getCommands().add(cancelCommand);
// set window
sourceListModel.setConfirmWindow(popupWindow);
}
use of org.ovirt.engine.core.common.action.CreateOrUpdateBond in project ovirt-engine by oVirt.
the class ExecuteNetworkCommandInNetworkOperationTest method testReBondingTwoNicsWithReattachingNetworkAttachmentOnNewlyCreatedBond.
/*
* At the beginning there was bond. It was broken into two nics, but they get back together in the end.
*/
@Test
public void testReBondingTwoNicsWithReattachingNetworkAttachmentOnNewlyCreatedBond() throws Exception {
addBondToParamsAndModel(existingBond, bondNetworkInterfaceModelA, Collections.emptyList());
initOrginalBondNameToIdMap(CreateOrUpdateBond.fromBond(existingBond));
NetworkOperation.BREAK_BOND.getTarget().executeNetworkCommand(bondNetworkInterfaceModelA, null, dataFromHostSetupNetworksModel);
NetworkOperation.BOND_WITH.getTarget().executeNetworkCommand(networkInterfaceModelOfNicA, networkInterfaceModelOfNicB, dataFromHostSetupNetworksModel, createBond(null, existingBondName, Collections.emptyList()));
// related network attachment will be updated, not removed and created new one.
assertThat(dataFromHostSetupNetworksModel.getNetworkAttachments().size(), is(0));
assertThat(dataFromHostSetupNetworksModel.getRemovedNetworkAttachments().size(), is(0));
assertThat(dataFromHostSetupNetworksModel.getBonds().size(), is(1));
CreateOrUpdateBond newOrModifiedBond = dataFromHostSetupNetworksModel.getBonds().iterator().next();
assertBond(newOrModifiedBond, existingBondId, Arrays.asList(nicA, nicB));
assertThat(dataFromHostSetupNetworksModel.getRemovedBonds().size(), is(0));
}
use of org.ovirt.engine.core.common.action.CreateOrUpdateBond in project ovirt-engine by oVirt.
the class ExecuteNetworkCommandInNetworkOperationTest method testAddingNewNicWithNetworkAttachmentToExistingBondWithoutAnyAttachment.
/*
* At the beginning there was bond without any network attachment. Then another nic showed up joining the family
* bringing his own network attachment along.
*/
@Test
public void testAddingNewNicWithNetworkAttachmentToExistingBondWithoutAnyAttachment() throws Exception {
addBondToParamsAndModel(existingBond, bondNetworkInterfaceModelA, Collections.emptyList());
NetworkAttachment networkAttachment = createAttachmentOnNetworkModelAndUpdateParams(networkInterfaceModelOfNicC, logicalNetworkModelOfNetworkC);
when(networkInterfaceModelOfNicC.getItems()).thenReturn(Collections.singletonList(logicalNetworkModelOfNetworkC));
initNetworkIdToExistingAttachmentIdMap(networkAttachment);
NetworkOperation.ADD_TO_BOND.getTarget().executeNetworkCommand(networkInterfaceModelOfNicC, bondNetworkInterfaceModelA, dataFromHostSetupNetworksModel);
// related network attachment will be updated, not removed and created new one.
assertThat(dataFromHostSetupNetworksModel.getNetworkAttachments().size(), is(1));
assertNetworkAttachment(dataFromHostSetupNetworksModel.getNetworkAttachments().iterator().next(), networkAttachment.getId(), networkC.getId(), existingBondId);
assertThat(dataFromHostSetupNetworksModel.getRemovedNetworkAttachments().size(), is(0));
assertThat(dataFromHostSetupNetworksModel.getBonds().size(), is(1));
CreateOrUpdateBond newOrModifiedBond = dataFromHostSetupNetworksModel.getBonds().iterator().next();
assertBond(newOrModifiedBond, existingBondId, Arrays.asList(nicA, nicB, nicC));
assertThat(dataFromHostSetupNetworksModel.getRemovedBonds().size(), is(0));
}
use of org.ovirt.engine.core.common.action.CreateOrUpdateBond in project ovirt-engine by oVirt.
the class ExecuteNetworkCommandInNetworkOperationTest method addBondToParamsAndModel.
private void addBondToParamsAndModel(Bond bond, BondNetworkInterfaceModel bondModel, List<LogicalNetworkModel> networks) {
CreateOrUpdateBond createOrUpdateBond = CreateOrUpdateBond.fromBond(bond);
dataFromHostSetupNetworksModel.getBonds().add(createOrUpdateBond);
when(bondModel.getOriginalIface()).thenReturn(bond);
when(bondModel.getCreateOrUpdateBond()).thenReturn(createOrUpdateBond);
when(bondModel.getItems()).thenReturn(networks);
}
Aggregations