package org.ovirt.engine.core.common.businessentities; import java.util.HashSet; import java.util.Set; import org.ovirt.engine.core.common.VdcObjectType; /** * The provider type determines what external provider is used. */ public enum ProviderType implements Identifiable { OPENSTACK_NETWORK(0, true, true, true, true, VdcObjectType.Network), FOREMAN(1, false, false, false, false, VdcObjectType.VDS), OPENSTACK_IMAGE(2, true, true, false, true, VdcObjectType.Storage), OPENSTACK_VOLUME(3, true, true, false, true, VdcObjectType.Storage), VMWARE(4, false, false, false, false, VdcObjectType.VM), EXTERNAL_NETWORK(5, true, true, true, false, VdcObjectType.Network), KVM(6, false, false, false, false, VdcObjectType.VM), XEN(7, false, false, false, false, VdcObjectType.VM); private int value; private Set<VdcObjectType> providedTypes; private boolean isTenantAware; private boolean isAuthUrlAware; private boolean isReadOnlyAware; private boolean isTenantRequired; private ProviderType(int value, boolean isTenantAware, boolean isAuthUrlAware, boolean isReadOnlyAware, boolean isTenantRequired, VdcObjectType... providedTypes) { this.value = value; this.isTenantAware = isTenantAware; this.isAuthUrlAware = isAuthUrlAware; this.isReadOnlyAware = isReadOnlyAware; this.isTenantRequired = isTenantRequired; this.providedTypes = new HashSet<>(); for (VdcObjectType providedType : providedTypes) { this.providedTypes.add(providedType); } } @Override public int getValue() { return value; } public Set<VdcObjectType> getProvidedTypes() { return providedTypes; } public boolean isTenantAware() { return isTenantAware; } public boolean isAuthUrlAware() { return isAuthUrlAware; } public boolean isReadOnlyAware() { return isReadOnlyAware; } public boolean isTenantRequired() { return isTenantRequired; } }