@Override protected void executeSave() { IFrontendActionAsyncCallback addNetworkCallback = new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result1) { VdcReturnValueBase retVal = result1.getReturnValue(); boolean succeeded = false; if (retVal != null && retVal.getSucceeded()) { succeeded = true; } postSaveAction(succeeded ? (Guid) retVal.getActionReturnValue() : null, succeeded); } }; final AddNetworkStoragePoolParameters parameters = new AddNetworkStoragePoolParameters(getSelectedDc().getId(), getNetwork()); parameters.setVnicProfileRequired(false); // New network if (getExport().getEntity()) { Provider externalProvider = getExternalProviders().getSelectedItem(); ProviderNetwork providerNetwork = new ProviderNetwork(); providerNetwork.setProviderId(externalProvider.getId()); getNetwork().setProvidedBy(providerNetwork); Frontend.getInstance() .runAction(VdcActionType.AddNetworkOnProvider, parameters, addNetworkCallback, null); } else { Frontend.getInstance() .runAction(VdcActionType.AddNetwork, parameters, addNetworkCallback, null); } }
public void onImport() { if (!validate()) { return; } List<VdcActionParametersBase> multipleActionParameters = new LinkedList<VdcActionParametersBase>(); List<IFrontendActionAsyncCallback> callbacks = new LinkedList<IFrontendActionAsyncCallback>(); dcClusters = new HashMap<Guid, Collection<VDSGroup>>(); for (final ExternalNetwork externalNetwork : (Iterable<ExternalNetwork>) importedNetworks.getItems()) { final Network network = externalNetwork.getNetwork(); final Guid dcId = ((StoragePool) externalNetwork.getDataCenters().getSelectedItem()).getId(); network.setName(externalNetwork.getDisplayName()); network.setDataCenterId(dcId); AddNetworkStoragePoolParameters params = new AddNetworkStoragePoolParameters(dcId, network); params.setVnicProfileRequired(false); multipleActionParameters.add(params); callbacks.add( new IFrontendActionAsyncCallback() { @Override public void executed(FrontendActionAsyncResult result) { VdcReturnValueBase returnValue = result.getReturnValue(); if (returnValue != null && returnValue.getSucceeded()) { network.setId((Guid) returnValue.getActionReturnValue()); // Perform sequentially: first fetch clusters, then attach network, then create VNIC // profile fetchDcClusters(dcId, network, externalNetwork.isPublicUse()); } } }); } Frontend.getInstance() .runMultipleActions(VdcActionType.AddNetwork, multipleActionParameters, callbacks); cancel(); }