package org.ovirt.engine.ui.uicommonweb.models.providers; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VmwareVmProviderProperties; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.ImportVmsModel; import org.ovirt.engine.ui.uicommonweb.validation.HostAddressValidation; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.LengthValidation; import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; public class VmwarePropertiesModel extends ProxyHostPropertiesModel { private EntityModel<String> vCenter = new EntityModel<>(); private EntityModel<String> esx = new EntityModel<>(); private EntityModel<String> vmwareDatacenter = new EntityModel<>(); private EntityModel<String> vmwareCluster = new EntityModel<>(); private EntityModel<Boolean> verifySSL = new EntityModel<>(true); private ListModel<VDS> proxyHost = new ListModel<>(); public VmwarePropertiesModel() { getPropertyChangedEvent().addListener((ev, sender, args) -> { if ("IsAvailable".equals(args.propertyName)) { //$NON-NLS-1$ vCenter.setIsAvailable(getIsAvailable()); esx.setIsAvailable(getIsAvailable()); vmwareDatacenter.setIsAvailable(getIsAvailable()); vmwareCluster.setIsAvailable(getIsAvailable()); verifySSL.setIsAvailable(getIsAvailable()); proxyHost.setIsAvailable(getIsAvailable()); } }); } public boolean validate() { if (!getIsAvailable()) { setIsValid(true); } else { getvCenter().validateEntity(new IValidation[] { new NotEmptyValidation(), new LengthValidation(255), new HostAddressValidation() }); getEsx().validateEntity(new IValidation[]{ new NotEmptyValidation(), new LengthValidation(255), new HostAddressValidation()}); vmwareDatacenter.validateEntity(new IValidation[]{ new NotEmptyValidation()}); setIsValid(getvCenter().getIsValid() && getEsx().getIsValid() && getVmwareDatacenter().getIsValid()); } return getIsValid(); } public ListModel<VDS> getProxyHost() { return proxyHost; } public EntityModel<Boolean> getVerifySSL() { return verifySSL; } public EntityModel<String> getvCenter() { return vCenter; } public EntityModel<String> getEsx() { return esx; } public EntityModel<String> getVmwareDatacenter() { return vmwareDatacenter; } public EntityModel<String> getVmwareCluster() { return vmwareCluster; } public void setVmwareCluster(EntityModel<String> vmwareCluster) { this.vmwareCluster = vmwareCluster; } VmwareVmProviderProperties getVmwareVmProviderProperties(Guid dataCenterId) { return new VmwareVmProviderProperties( getvCenter().getEntity(), getEsx().getEntity(), ImportVmsModel.mergeDcAndCluster(getVmwareDatacenter().getEntity(), getVmwareCluster().getEntity(), false), getVerifySSL().getEntity(), dataCenterId, getProxyHost().getSelectedItem() != null ? getProxyHost().getSelectedItem().getId() : null); } public void init(Provider<VmwareVmProviderProperties> provider) { VmwareVmProviderProperties properties = provider.getAdditionalProperties(); getvCenter().setEntity(properties.getvCenter()); getEsx().setEntity(properties.getEsx()); Pair<String, String> dcAndCluster = ImportVmsModel.splitToDcAndCluster(properties.getDataCenter()); getVmwareDatacenter().setEntity(dcAndCluster.getFirst()); getVmwareCluster().setEntity(dcAndCluster.getSecond()); getVerifySSL().setEntity(properties.isVerifySSL()); setLastProxyHostId(properties.getProxyHostId()); setLastStoragePoolId(properties.getStoragePoolId()); } public String getUrl() { return ImportVmsModel.getVmwareUrl(null, getvCenter().getEntity(), getVmwareDatacenter().getEntity(), getVmwareCluster().getEntity(), getEsx().getEntity(), getVerifySSL().getEntity()); } }