package org.ovirt.engine.ui.uicommonweb.models.hosts; import java.util.Collections; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.vdscommands.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.action.*; import org.ovirt.engine.ui.frontend.*; import org.ovirt.engine.ui.uicommonweb.*; import org.ovirt.engine.ui.uicommonweb.models.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.ui.uicommonweb.models.clusters.*; import org.ovirt.engine.ui.uicommonweb.models.common.*; import org.ovirt.engine.ui.uicommonweb.models.configure.*; import org.ovirt.engine.ui.uicommonweb.models.datacenters.*; import org.ovirt.engine.ui.uicommonweb.models.tags.*; import org.ovirt.engine.ui.uicompat.*; import org.ovirt.engine.core.common.interfaces.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.common.queries.*; import org.ovirt.engine.core.common.*; import org.ovirt.engine.ui.uicommonweb.dataprovider.*; import org.ovirt.engine.ui.uicommonweb.*; import org.ovirt.engine.ui.uicommonweb.models.*; @SuppressWarnings("unused") public class AddDataCenterRM extends BaseRM { public AddDataCenterRM(HostListModel model) { super(model, new DataBag()); Transaction.Current.EnlistVolatile(this, EnlistmentOptions.None); ConfigureLocalStorageModel configureLocalStorageModel = (ConfigureLocalStorageModel)getModel().getWindow(); if (configureLocalStorageModel.getDontCreateDataCenter()) { getData().setDataCenterId(configureLocalStorageModel.getDataCenter().getDataCenterId().getValue()); } new AddClusterRM(getModel(), getData()); } @Override public void Prepare(PreparingEnlistment preparingEnlistment) { ConfigureLocalStorageModel model = (ConfigureLocalStorageModel)getModel().getWindow(); if (!model.getDontCreateDataCenter()) { DataCenterModel m = model.getDataCenter(); String name = (String)m.getName().getEntity(); //Try to find existing data center with the specified name. storage_pool dataCenter = DataProvider.GetDataCenterByName(name); if (dataCenter != null) { getData().setDataCenterId(dataCenter.getId()); preparingEnlistment.Prepared(); } else { dataCenter = new storage_pool(); dataCenter.setname(name); dataCenter.setdescription((String)m.getDescription().getEntity()); dataCenter.setstorage_pool_type((StorageType)m.getStorageTypeList().getSelectedItem()); dataCenter.setcompatibility_version((Version)m.getVersion().getSelectedItem()); VdcReturnValueBase returnValue = Frontend.RunAction(VdcActionType.AddEmptyStoragePool, new StoragePoolManagementParameter(dataCenter)); if (returnValue != null && returnValue.getSucceeded()) { getData().setDataCenterId((Guid)returnValue.getActionReturnValue()); preparingEnlistment.Prepared(); } else { preparingEnlistment.ForceRollback(); } } } else { preparingEnlistment.Prepared(); } } @Override public void Commit(Enlistment enlistment) { enlistment.Done(); } @Override public void Rollback(Enlistment enlistment) { if (getModel() == null || getModel().getSelectedItem() == null) { return; } VDS host = (VDS)getModel().getSelectedItem(); //perform rollback only when the host is in maintenance if (host.getstatus() != VDSStatus.Maintenance) { return; } storage_pool dataCenter = DataProvider.GetDataCenterById(getData().getDataCenterId()); //perform rollback only when the Data Center is un uninitialized if (dataCenter.getstatus() != StoragePoolStatus.Uninitialized) { return; } if (getData().getOldClusterId() != null && !host.getvds_group_id().getValue().equals(getData().getOldClusterId().getValue())) { //Switch host back to previous cluster. VdcReturnValueBase returnValue = Frontend.RunAction(VdcActionType.ChangeVDSCluster, new ChangeVDSClusterParameters(getData().getOldClusterId(), host.getvds_id())); if(returnValue != null && returnValue.getSucceeded()) { //Remove cluster. if (getData().getClusterId() != null) { Frontend.RunAction(VdcActionType.RemoveVdsGroup, new VdsGroupParametersBase(getData().getClusterId())); } //Remove data center. if (getData().getDataCenterId() != null) { Frontend.RunAction(VdcActionType.RemoveStoragePool, new StoragePoolParametersBase(getData().getDataCenterId())); } } } } @Override public void InDoubt(Enlistment enlistment) { } }