Ori Liel has uploaded a new change for review. Change subject: restapi: Support View and Reload of System Configuration ......................................................................
restapi: Support View and Reload of System Configuration Change-Id: I3d5cf3a09cfbf4bfb7586ba296e13f71386c396f Signed-off-by: Ori Liel <ol...@redhat.com> --- M backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/LinkHelper.java A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/ConfigurationValue.java A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemResource.java A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemsResource.java M backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNicsResource.java A backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ConfigurationItemMapper.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java A backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MD5Tools.java 14 files changed, 674 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/68/11468/1 diff --git a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/LinkHelper.java b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/LinkHelper.java index 8af3ed1..849ceee 100644 --- a/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/LinkHelper.java +++ b/backend/manager/modules/restapi/interface/common/jaxrs/src/main/java/org/ovirt/engine/api/common/util/LinkHelper.java @@ -31,6 +31,7 @@ import org.ovirt.engine.api.model.BaseResource; import org.ovirt.engine.api.model.CdRom; import org.ovirt.engine.api.model.Cluster; +import org.ovirt.engine.api.model.ConfigurationItem; import org.ovirt.engine.api.model.DataCenter; import org.ovirt.engine.api.model.DetailedLink; import org.ovirt.engine.api.model.Hook; @@ -78,6 +79,8 @@ import org.ovirt.engine.api.resource.CapabiliyResource; import org.ovirt.engine.api.resource.ClusterResource; import org.ovirt.engine.api.resource.ClustersResource; +import org.ovirt.engine.api.resource.ConfigurationItemResource; +import org.ovirt.engine.api.resource.ConfigurationItemsResource; import org.ovirt.engine.api.resource.DataCenterResource; import org.ovirt.engine.api.resource.DataCentersResource; import org.ovirt.engine.api.resource.DeviceResource; @@ -307,6 +310,9 @@ map = new ParentToCollectionMap(CapabiliyResource.class, CapabilitiesResource.class); TYPES.put(VersionCaps.class, map); + + map = new ParentToCollectionMap(ConfigurationItemResource.class, ConfigurationItemsResource.class); + TYPES.put(ConfigurationItem.class, map); } /** diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/ConfigurationValue.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/ConfigurationValue.java new file mode 100644 index 0000000..11b8017 --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/model/ConfigurationValue.java @@ -0,0 +1,91 @@ +package org.ovirt.engine.api.model; + +public enum ConfigurationValue { + MAX_NUM_OF_VM_CPUS, + MAX_NUM_OF_VM_SOCKETS, + MAX_NUM_OF_CPU_PER_SOCKET, + ENGINE_VERSION, + SSL_ENABLED, + CIPHER_SUITE, + VM_POOL_LEASE_DAYS, + VM_POOL_LEASE_START_TIME, + VM_POOL_LEASE_END_TIME, + MAX_VMS_IN_POOL, + MAX_HOST_MEM_OVER_COMMIT, + MAX_HOST_MEM_OVER_COMMIT_FOR_SERVERS, + AD_USER_NAME, + LOCAL_ADMIN_PASSWORD, + VALID_NUM_OF_MONITORS, + ENABLE_USB_AS_DEFAULT, + SPICE_SECURE_CHANNELS, + SPICE_RELEASE_CURSOR_KEYS, + SPICE_TOGGLE_FULL_SCREEN_KEYS, + HIGH_UTILIZATION_FOR_EVENLY_DISTRIBUTE, + SPICE_USB_AUTO_SHARE, + IMPORT_DEFAULT_PATH, + COMPUTER_AD_PATHS, + HOST_SELECTION_ALGORITHM, + LOW_UTILIZATION_FOR_EVENLY_DISTRIBUTE, + LOW_UTILIZATION_FOR_POWER_SAVE, + HIGH_UTILIZATION_FOR_POWER_SAVE, + CPU_OVER_COMMIT_DURATION_MINUTES, + INSTALL_HOST, + ASYNC_TASK_POLLING_RATE, + HOST_FENCE_TYPE, + HOST_FENCE_OPTION_MAPPING, + FENCE_PROXY_DEFAULT_PREFERENCES, + VCPU_CONSUMPTION_PERCENTAGE, + SEARCH_RESULTS_LIMIT, + MAX_BLOCK_DISK_SIZE, + REDIRECT_SERVLET_REPORTS_PAGE, + ENABLE_SPICE_ROOT_CERTIFICATE_VALIDATION, + VM_MIN_MEMORY_SIZE_IN_MB, + VM32_BIT_MAX_MEMORY_SIZE_IN_MB, + VM64_BIT_MAX_MEMORY_SIZE_IN_MB, + VM_PRIORITY_MAX_VALUE, + STORAGE_DOMAIN_NAME_SIZE_LIMIT, + STORAGE_POOL_NAME_SIZE_LIMIT, + SAN_WIPE_AFTER_DELETE, + AUTHENTICATION_METHOD, + USER_DEFINED_VM_PROPERTIES, + PREDEFINED_VM_PROPERTIES, + HOST_FENCE_OPTION_TYPES, + SERVER_CPU_LIST, + SUPPORTED_CLUSTER_LEVELS, + OVF_UPDATE_INTERVAL_IN_MINUTES, + OVF_ITEMS_COUNT_PER_UPDATE, + PRODUCT_RPM_VERSION, + RHEVH_LOCAL_FS_PATH, + DOCS_URL, + HOT_PLUG_ENABLED, + NETWORK_LINKING_SUPPORTED, + SUPPORT_BRIDGES_REPORT_BY_VDSM, + MANAGEMENT_NETWORK, + APPLICATION_MODE, + SHAREABLE_DISK_ENABLED, + DIRECT_LUN_DISK_ENABLED, + LIVE_STORAGE_MIGRATION_ENABLED, + WAN_DISABLE_EFFECTS, + WAN_COLOR_DEPTH, + SUPPORT_FORCE_CREATE_VG, + NETWORK_CONNECTIVITY_CHECK_TIMEOUT_IN_SECONDS, + ALLOW_CLUSTER_WITH_VIRT_GLUSTER_ENABLED, + MTU_OVERRIDE_SUPPORTED, + GLUSTER_VOLUME_OPTION_GROUP_VIRT_VALUE, + GLUSTER_VOLUME_OPTION_OWNER_USER_VIRT_VALUE, + GLUSTER_VOLUME_OPTION_OWNER_GROUP_VIRT_VALUE, + CPU_PINNING_ENABLED, + CPU_PIN_MIGRATION_ENABLED; + + public String value() { + return name().toLowerCase(); + } + + public static ConfigurationValue fromValue(String value) { + try { + return valueOf(value.toUpperCase()); + } catch (IllegalArgumentException e) { + return null; + } + } +} diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemResource.java new file mode 100644 index 0000000..a519f74 --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemResource.java @@ -0,0 +1,10 @@ +package org.ovirt.engine.api.resource; + +import javax.ws.rs.Produces; + +import org.ovirt.engine.api.model.ConfigurationItem; + +@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML }) +public interface ConfigurationItemResource extends UpdatableResource<ConfigurationItem> { + +} diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemsResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemsResource.java new file mode 100644 index 0000000..3447a21 --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/ConfigurationItemsResource.java @@ -0,0 +1,36 @@ +package org.ovirt.engine.api.resource; + +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Response; + +import org.jboss.resteasy.annotations.providers.jaxb.Formatted; +import org.ovirt.engine.api.model.Action; +import org.ovirt.engine.api.model.Actionable; +import org.ovirt.engine.api.model.ConfigurationItems; + +@Path("/configuration") +@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML }) +public interface ConfigurationItemsResource { + + @Path("{action: (reload)}") + public ActionResource getActionSubresource(@PathParam("action") String action); + + @GET + @Formatted + public ConfigurationItems list(); + + @POST + @Formatted + @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_X_YAML }) + @Actionable + @Path("reload") + public Response reload(Action action); + + @Path("{id}") + public ConfigurationItemResource getVmSubResource(@PathParam("id") String id); +} diff --git a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd index dd5877b..72dc238 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd +++ b/backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd @@ -2978,4 +2978,34 @@ <xs:element name="type" type="xs:string" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:complexType> - </xs:schema> + + <xs:element name="configuration_item" type="ConfigurationItem"/> + + <xs:element name="configuration_items" type="ConfigurationItems"/> + + <xs:complexType name="ConfigurationItem"> + <xs:complexContent> + <xs:extension base="BaseResource"> + <xs:sequence> + <xs:element name="value" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + + <xs:complexType name="ConfigurationItems"> + <xs:complexContent> + <xs:extension base="BaseResources"> + <xs:sequence> + <xs:annotation> + <xs:appinfo> + <jaxb:property name="ConfigurationItems"/> + </xs:appinfo> + </xs:annotation> + <xs:element ref="configuration_item" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + +</xs:schema> diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java index 5c6d243..2e37772 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/BackendApplication.java @@ -39,6 +39,7 @@ import org.ovirt.engine.api.restapi.resource.BackendApiResource; import org.ovirt.engine.api.restapi.resource.BackendCapabilitiesResource; import org.ovirt.engine.api.restapi.resource.BackendClustersResource; +import org.ovirt.engine.api.restapi.resource.BackendConfigurationItemsResource; import org.ovirt.engine.api.restapi.resource.BackendDataCentersResource; import org.ovirt.engine.api.restapi.resource.BackendDisksResource; import org.ovirt.engine.api.restapi.resource.BackendDomainsResource; @@ -128,6 +129,7 @@ addResource(new BackendUsersResource()); addResource(new BackendGroupsResource()); addResource(new BackendDomainsResource()); + addResource(new BackendConfigurationItemsResource()); // Authentication singletons: final BasicAuthorizationScheme scheme = new BasicAuthorizationScheme(); diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResource.java index 40dd464..158ab24 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendCollectionResource.java @@ -206,7 +206,7 @@ * @param model the resource to add actions to * @return collection with action links */ - protected <C extends ActionableResource> C addActions(C model) { + protected <C extends ActionableResource> C addActionLinks(C model) { LinkHelper.addActions(getUriInfo(), model, this); return model; } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java index 1b2cc84..b3e5379 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendApiResource.java @@ -108,6 +108,7 @@ links.add(createLink("vmpools", LinkFlags.SEARCHABLE)); links.add(createLink("vms", LinkFlags.SEARCHABLE)); links.add(createLink("disks", LinkFlags.SEARCHABLE)); + links.add(createLink("configuration")); return links; } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemResource.java new file mode 100644 index 0000000..8ad6918 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemResource.java @@ -0,0 +1,44 @@ +package org.ovirt.engine.api.restapi.resource; + +import org.ovirt.engine.api.model.ConfigurationItem; +import org.ovirt.engine.api.model.ConfigurationItems; +import org.ovirt.engine.api.resource.ConfigurationItemResource; +import org.ovirt.engine.api.restapi.utils.MD5Tools; + +public class BackendConfigurationItemResource extends AbstractBackendSubResource<ConfigurationItem, Object> implements ConfigurationItemResource { + + private BackendConfigurationItemsResource parent; + + public BackendConfigurationItemResource(String id, BackendConfigurationItemsResource parent) { + super(id, ConfigurationItem.class, Object.class, new String[0]); + this.parent = parent; + } + + @Override + public ConfigurationItem get() { + ConfigurationItems items = parent.list(); + return findItem(items); + } + + private ConfigurationItem findItem(ConfigurationItems items) { + for (ConfigurationItem item : items.getConfigurationItems()) { + if (MD5Tools.createGuidUsingMd5(item.getName()).equals(guid)) { + return item; + } + } + return notFound(); + } + + @Override + public ConfigurationItem update(ConfigurationItem resource) { + // TODO Auto-generated method stub + return null; + } + + @Override + protected ConfigurationItem doPopulate(ConfigurationItem model, Object entity) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemsResource.java new file mode 100644 index 0000000..9ed5d1d --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendConfigurationItemsResource.java @@ -0,0 +1,86 @@ +package org.ovirt.engine.api.restapi.resource; + +import java.util.Map; +import java.util.Map.Entry; + +import javax.ws.rs.core.Response; + +import org.ovirt.engine.api.model.Action; +import org.ovirt.engine.api.model.ConfigurationItem; +import org.ovirt.engine.api.model.ConfigurationItems; +import org.ovirt.engine.api.model.Version; +import org.ovirt.engine.api.resource.ActionResource; +import org.ovirt.engine.api.resource.ConfigurationItemResource; +import org.ovirt.engine.api.resource.ConfigurationItemsResource; +import org.ovirt.engine.api.restapi.util.VersionHelper; +import org.ovirt.engine.core.common.action.VdcActionParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.KeyValuePairCompat; + +public class BackendConfigurationItemsResource extends AbstractBackendCollectionResource<ConfigurationItem, Object> implements ConfigurationItemsResource { + + private static final String ALL_VERSIONS = "general"; + + public BackendConfigurationItemsResource() { + super(ConfigurationItem.class, Object.class, new String[] {}); + } + + @Override + public ConfigurationItems list() { + @SuppressWarnings("unchecked") + Map<KeyValuePairCompat<ConfigurationValues, String>, Object> itemsMap = + getEntity(Map.class, VdcQueryType.GetConfigurationValues, + new VdcQueryParametersBase(), null); + return addActionLinks(mapCollection(itemsMap)); + } + + private ConfigurationItems mapCollection(Map<KeyValuePairCompat<ConfigurationValues, String>, Object> itemsMap) { + ConfigurationItems items = new ConfigurationItems(); + Version engineVersion = + VersionHelper.parseVersion(getConfigurationValue(String.class, ConfigurationValues.VdcVersion, null)); + for (Entry<KeyValuePairCompat<ConfigurationValues, String>, Object> entry : itemsMap.entrySet()) { + if (isVersionMatch(entry, engineVersion)) { + items.getConfigurationItems().add(addLinks(getMapper(Entry.class, ConfigurationItem.class).map(entry, + null))); + } + } + return items; + } + + private boolean isVersionMatch(Entry<KeyValuePairCompat<ConfigurationValues, String>, Object> entry, + Version engineVersion) { + String itemVersion = entry.getKey().getValue(); + return itemVersion.equals(ALL_VERSIONS) + || VersionHelper.equals(engineVersion, VersionHelper.parseVersion(itemVersion)); + } + + @Override + public ConfigurationItemResource getVmSubResource(String id) { + return inject(new BackendConfigurationItemResource(id, this)); + } + + @Override + public ActionResource getActionSubresource(String action) { + return inject(new BackendActionResource(action, "")); + } + + @Override + public Response reload(Action action) { + return performAction(VdcActionType.ReloadConfigurations, + new VdcActionParametersBase()); + } + + @Override + protected ConfigurationItem doPopulate(ConfigurationItem model, Object entity) { + return model; + } + + @Override + protected Response performRemove(String id) { + // Remove will never be called. Also this stub will soon not be necessary. + return null; + } +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNicsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNicsResource.java index 2ec2c9c..008a682 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNicsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostNicsResource.java @@ -71,7 +71,7 @@ } ret.getHostNics().add(addLinks(hostNic)); } - return addActions(ret); + return addActionLinks(ret); } @SuppressWarnings("serial") diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ConfigurationItemMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ConfigurationItemMapper.java new file mode 100644 index 0000000..0c7aa4b --- /dev/null +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ConfigurationItemMapper.java @@ -0,0 +1,342 @@ +package org.ovirt.engine.api.restapi.types; + +import java.util.Map.Entry; + +import org.ovirt.engine.api.model.ConfigurationItem; +import org.ovirt.engine.api.model.ConfigurationValue; +import org.ovirt.engine.api.restapi.utils.MD5Tools; +import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.core.compat.KeyValuePairCompat; + +public class ConfigurationItemMapper { + + @Mapping(from = Entry.class, to = ConfigurationItem.class) + public static ConfigurationItem map( + Entry<KeyValuePairCompat<ConfigurationValues, String>, Object> entry, ConfigurationItem configurationItem) { + ConfigurationItem item = new ConfigurationItem(); + String itemName = map(entry.getKey().getKey(), null).value(); + String itemValue = entry.getValue().toString(); + item.setName(itemName); + item.setValue(itemValue); + item.setId(MD5Tools.createGuidUsingMd5(itemName).toString()); + return item; + + } + + @Mapping(from = ConfigurationValues.class, to = ConfigurationValue.class) + public static ConfigurationValue map (ConfigurationValues entity, ConfigurationValue model) { + switch (entity) { + case AdUserName: + return ConfigurationValue.AD_USER_NAME; + case AllowClusterWithVirtGlusterEnabled: + return ConfigurationValue.ALLOW_CLUSTER_WITH_VIRT_GLUSTER_ENABLED; + case ApplicationMode: + return ConfigurationValue.APPLICATION_MODE; + case AsyncTaskPollingRate: + return ConfigurationValue.ASYNC_TASK_POLLING_RATE; + case AuthenticationMethod: + return ConfigurationValue.AUTHENTICATION_METHOD; + case CipherSuite: + return ConfigurationValue.CIPHER_SUITE; + case ComputerADPaths: + return ConfigurationValue.COMPUTER_AD_PATHS; + case CpuOverCommitDurationMinutes: + return ConfigurationValue.CPU_OVER_COMMIT_DURATION_MINUTES; + case CpuPinMigrationEnabled: + return ConfigurationValue.CPU_PIN_MIGRATION_ENABLED; + case CpuPinningEnabled: + return ConfigurationValue.CPU_PINNING_ENABLED; + case DirectLUNDiskEnabled: + return ConfigurationValue.DIRECT_LUN_DISK_ENABLED; + case DocsURL: + return ConfigurationValue.DOCS_URL; + case EnableSpiceRootCertificateValidation: + return ConfigurationValue.ENABLE_SPICE_ROOT_CERTIFICATE_VALIDATION; + case EnableUSBAsDefault: + return ConfigurationValue.ENABLE_USB_AS_DEFAULT; + case FenceProxyDefaultPreferences: + return ConfigurationValue.FENCE_PROXY_DEFAULT_PREFERENCES; + case GlusterVolumeOptionGroupVirtValue: + return ConfigurationValue.GLUSTER_VOLUME_OPTION_GROUP_VIRT_VALUE; + case GlusterVolumeOptionOwnerGroupVirtValue: + return ConfigurationValue.GLUSTER_VOLUME_OPTION_OWNER_GROUP_VIRT_VALUE; + case GlusterVolumeOptionOwnerUserVirtValue: + return ConfigurationValue.GLUSTER_VOLUME_OPTION_OWNER_USER_VIRT_VALUE; + case HighUtilizationForEvenlyDistribute: + return ConfigurationValue.HIGH_UTILIZATION_FOR_EVENLY_DISTRIBUTE; + case HighUtilizationForPowerSave: + return ConfigurationValue.HIGH_UTILIZATION_FOR_POWER_SAVE; + case HotPlugEnabled: + return ConfigurationValue.HOT_PLUG_ENABLED; + case ImportDefaultPath: + return ConfigurationValue.IMPORT_DEFAULT_PATH; + case InstallVds: + return ConfigurationValue.INSTALL_HOST; + case LiveStorageMigrationEnabled: + return ConfigurationValue.LIVE_STORAGE_MIGRATION_ENABLED; + case LocalAdminPassword: + return ConfigurationValue.LOCAL_ADMIN_PASSWORD; + case LowUtilizationForEvenlyDistribute: + return ConfigurationValue.LOW_UTILIZATION_FOR_EVENLY_DISTRIBUTE; + case LowUtilizationForPowerSave: + return ConfigurationValue.LOW_UTILIZATION_FOR_POWER_SAVE; + case MTUOverrideSupported: + return ConfigurationValue.MTU_OVERRIDE_SUPPORTED; + case ManagementNetwork: + return ConfigurationValue.MANAGEMENT_NETWORK; + case MaxBlockDiskSize: + return ConfigurationValue.MAX_BLOCK_DISK_SIZE; + case MaxNumOfCpuPerSocket: + return ConfigurationValue.MAX_NUM_OF_CPU_PER_SOCKET; + case MaxNumOfVmCpus: + return ConfigurationValue.MAX_NUM_OF_VM_CPUS; + case MaxNumOfVmSockets: + return ConfigurationValue.MAX_NUM_OF_VM_SOCKETS; + case MaxVdsMemOverCommit: + return ConfigurationValue.MAX_HOST_MEM_OVER_COMMIT; + case MaxVdsMemOverCommitForServers: + return ConfigurationValue.MAX_HOST_MEM_OVER_COMMIT_FOR_SERVERS; + case MaxVmsInPool: + return ConfigurationValue.MAX_VMS_IN_POOL; + case NetworkConnectivityCheckTimeoutInSeconds: + return ConfigurationValue.NETWORK_CONNECTIVITY_CHECK_TIMEOUT_IN_SECONDS; + case NetworkLinkingSupported: + return ConfigurationValue.NETWORK_LINKING_SUPPORTED; + case OvfItemsCountPerUpdate: + return ConfigurationValue.OVF_ITEMS_COUNT_PER_UPDATE; + case OvfUpdateIntervalInMinutes: + return ConfigurationValue.OVF_UPDATE_INTERVAL_IN_MINUTES; + case PredefinedVMProperties: + return ConfigurationValue.PREDEFINED_VM_PROPERTIES; + case ProductRPMVersion: + return ConfigurationValue.PRODUCT_RPM_VERSION; + case RedirectServletReportsPage: + return ConfigurationValue.REDIRECT_SERVLET_REPORTS_PAGE; + case RhevhLocalFSPath: + return ConfigurationValue.RHEVH_LOCAL_FS_PATH; + case SANWipeAfterDelete: + return ConfigurationValue.SAN_WIPE_AFTER_DELETE; + case SSLEnabled: + return ConfigurationValue.SSL_ENABLED; + case SearchResultsLimit: + return ConfigurationValue.SEARCH_RESULTS_LIMIT; + case ServerCPUList: + return ConfigurationValue.SERVER_CPU_LIST; + case ShareableDiskEnabled: + return ConfigurationValue.SHAREABLE_DISK_ENABLED; + case SpiceReleaseCursorKeys: + return ConfigurationValue.SPICE_RELEASE_CURSOR_KEYS; + case SpiceSecureChannels: + return ConfigurationValue.SPICE_SECURE_CHANNELS; + case SpiceToggleFullScreenKeys: + return ConfigurationValue.SPICE_TOGGLE_FULL_SCREEN_KEYS; + case SpiceUsbAutoShare: + return ConfigurationValue.SPICE_USB_AUTO_SHARE; + case StorageDomainNameSizeLimit: + return ConfigurationValue.STORAGE_DOMAIN_NAME_SIZE_LIMIT; + case StoragePoolNameSizeLimit: + return ConfigurationValue.STORAGE_POOL_NAME_SIZE_LIMIT; + case SupportBridgesReportByVDSM: + return ConfigurationValue.SUPPORT_BRIDGES_REPORT_BY_VDSM; + case SupportForceCreateVG: + return ConfigurationValue.SUPPORT_FORCE_CREATE_VG; + case SupportedClusterLevels: + return ConfigurationValue.SUPPORTED_CLUSTER_LEVELS; + case UserDefinedVMProperties: + return ConfigurationValue.USER_DEFINED_VM_PROPERTIES; + case VM32BitMaxMemorySizeInMB: + return ConfigurationValue.VM32_BIT_MAX_MEMORY_SIZE_IN_MB; + case VM64BitMaxMemorySizeInMB: + return ConfigurationValue.VM64_BIT_MAX_MEMORY_SIZE_IN_MB; + case VMMinMemorySizeInMB: + return ConfigurationValue.VM_MIN_MEMORY_SIZE_IN_MB; + case ValidNumOfMonitors: + return ConfigurationValue.VALID_NUM_OF_MONITORS; + case VcpuConsumptionPercentage: + return ConfigurationValue.VCPU_CONSUMPTION_PERCENTAGE; + case VdcVersion: + return ConfigurationValue.ENGINE_VERSION; + case VdsFenceOptionMapping: + return ConfigurationValue.HOST_FENCE_OPTION_MAPPING; + case VdsFenceOptionTypes: + return ConfigurationValue.HOST_FENCE_OPTION_TYPES; + case VdsFenceType: + return ConfigurationValue.HOST_FENCE_TYPE; + case VdsSelectionAlgorithm: + return ConfigurationValue.HOST_SELECTION_ALGORITHM; + case VmPoolLeaseDays: + return ConfigurationValue.VM_POOL_LEASE_DAYS; + case VmPoolLeaseEndTime: + return ConfigurationValue.VM_POOL_LEASE_END_TIME; + case VmPoolLeaseStartTime: + return ConfigurationValue.VM_POOL_LEASE_START_TIME; + case VmPriorityMaxValue: + return ConfigurationValue.VM_PRIORITY_MAX_VALUE; + case WANColorDepth: + return ConfigurationValue.WAN_COLOR_DEPTH; + case WANDisableEffects: + return ConfigurationValue.WAN_DISABLE_EFFECTS; + default: + return null; + } + } + + @Mapping(from = ConfigurationValue.class, to = ConfigurationValues.class) + public static ConfigurationValues map(ConfigurationValue model, ConfigurationValues entity) { + switch (model) { + case AD_USER_NAME: + return ConfigurationValues.AdUserName; + case ALLOW_CLUSTER_WITH_VIRT_GLUSTER_ENABLED: + return ConfigurationValues.AllowClusterWithVirtGlusterEnabled; + case APPLICATION_MODE: + return ConfigurationValues.ApplicationMode; + case ASYNC_TASK_POLLING_RATE: + return ConfigurationValues.AsyncTaskPollingRate; + case AUTHENTICATION_METHOD: + return ConfigurationValues.AuthenticationMethod; + case CIPHER_SUITE: + return ConfigurationValues.CipherSuite; + case COMPUTER_AD_PATHS: + return ConfigurationValues.ComputerADPaths; + case CPU_OVER_COMMIT_DURATION_MINUTES: + return ConfigurationValues.CpuOverCommitDurationMinutes; + case CPU_PINNING_ENABLED: + return ConfigurationValues.CpuPinningEnabled; + case CPU_PIN_MIGRATION_ENABLED: + return ConfigurationValues.CpuPinMigrationEnabled; + case DIRECT_LUN_DISK_ENABLED: + return ConfigurationValues.DirectLUNDiskEnabled; + case DOCS_URL: + return ConfigurationValues.DocsURL; + case ENABLE_SPICE_ROOT_CERTIFICATE_VALIDATION: + return ConfigurationValues.EnableSpiceRootCertificateValidation; + case ENABLE_USB_AS_DEFAULT: + return ConfigurationValues.EnableUSBAsDefault; + case ENGINE_VERSION: + return ConfigurationValues.VdcVersion; + case FENCE_PROXY_DEFAULT_PREFERENCES: + return ConfigurationValues.FenceProxyDefaultPreferences; + case GLUSTER_VOLUME_OPTION_GROUP_VIRT_VALUE: + return ConfigurationValues.GlusterVolumeOptionGroupVirtValue; + case GLUSTER_VOLUME_OPTION_OWNER_GROUP_VIRT_VALUE: + return ConfigurationValues.GlusterVolumeOptionOwnerGroupVirtValue; + case GLUSTER_VOLUME_OPTION_OWNER_USER_VIRT_VALUE: + return ConfigurationValues.GlusterVolumeOptionOwnerUserVirtValue; + case HIGH_UTILIZATION_FOR_EVENLY_DISTRIBUTE: + return ConfigurationValues.HighUtilizationForEvenlyDistribute; + case HIGH_UTILIZATION_FOR_POWER_SAVE: + return ConfigurationValues.HighUtilizationForPowerSave; + case HOST_FENCE_OPTION_MAPPING: + return ConfigurationValues.VdsFenceOptionMapping; + case HOST_FENCE_OPTION_TYPES: + return ConfigurationValues.VdsFenceOptionTypes; + case HOST_FENCE_TYPE: + return ConfigurationValues.VdsFenceType; + case HOST_SELECTION_ALGORITHM: + return ConfigurationValues.VdsSelectionAlgorithm; + case HOT_PLUG_ENABLED: + return ConfigurationValues.HotPlugEnabled; + case IMPORT_DEFAULT_PATH: + return ConfigurationValues.ImportDefaultPath; + case INSTALL_HOST: + return ConfigurationValues.InstallVds; + case LIVE_STORAGE_MIGRATION_ENABLED: + return ConfigurationValues.LiveStorageMigrationEnabled; + case LOCAL_ADMIN_PASSWORD: + return ConfigurationValues.LocalAdminPassword; + case LOW_UTILIZATION_FOR_EVENLY_DISTRIBUTE: + return ConfigurationValues.LowUtilizationForEvenlyDistribute; + case LOW_UTILIZATION_FOR_POWER_SAVE: + return ConfigurationValues.LowUtilizationForPowerSave; + case MANAGEMENT_NETWORK: + return ConfigurationValues.ManagementNetwork; + case MAX_BLOCK_DISK_SIZE: + return ConfigurationValues.MaxBlockDiskSize; + case MAX_HOST_MEM_OVER_COMMIT: + return ConfigurationValues.MaxVdsMemOverCommit; + case MAX_HOST_MEM_OVER_COMMIT_FOR_SERVERS: + return ConfigurationValues.MaxVdsMemOverCommitForServers; + case MAX_NUM_OF_CPU_PER_SOCKET: + return ConfigurationValues.MaxNumOfCpuPerSocket; + case MAX_NUM_OF_VM_CPUS: + return ConfigurationValues.MaxNumOfVmCpus; + case MAX_NUM_OF_VM_SOCKETS: + return ConfigurationValues.MaxNumOfVmSockets; + case MAX_VMS_IN_POOL: + return ConfigurationValues.MaxVmsInPool; + case MTU_OVERRIDE_SUPPORTED: + return ConfigurationValues.MTUOverrideSupported; + case NETWORK_CONNECTIVITY_CHECK_TIMEOUT_IN_SECONDS: + return ConfigurationValues.NetworkConnectivityCheckTimeoutInSeconds; + case NETWORK_LINKING_SUPPORTED: + return ConfigurationValues.NetworkLinkingSupported; + case OVF_ITEMS_COUNT_PER_UPDATE: + return ConfigurationValues.OvfItemsCountPerUpdate; + case OVF_UPDATE_INTERVAL_IN_MINUTES: + return ConfigurationValues.OvfUpdateIntervalInMinutes; + case PREDEFINED_VM_PROPERTIES: + return ConfigurationValues.PredefinedVMProperties; + case PRODUCT_RPM_VERSION: + return ConfigurationValues.ProductRPMVersion; + case REDIRECT_SERVLET_REPORTS_PAGE: + return ConfigurationValues.RedirectServletReportsPage; + case RHEVH_LOCAL_FS_PATH: + return ConfigurationValues.RhevhLocalFSPath; + case SAN_WIPE_AFTER_DELETE: + return ConfigurationValues.SANWipeAfterDelete; + case SEARCH_RESULTS_LIMIT: + return ConfigurationValues.SearchResultsLimit; + case SERVER_CPU_LIST: + return ConfigurationValues.ServerCPUList; + case SHAREABLE_DISK_ENABLED: + return ConfigurationValues.ShareableDiskEnabled; + case SPICE_RELEASE_CURSOR_KEYS: + return ConfigurationValues.SpiceReleaseCursorKeys; + case SPICE_SECURE_CHANNELS: + return ConfigurationValues.SpiceSecureChannels; + case SPICE_TOGGLE_FULL_SCREEN_KEYS: + return ConfigurationValues.SpiceToggleFullScreenKeys; + case SPICE_USB_AUTO_SHARE: + return ConfigurationValues.SpiceUsbAutoShare; + case SSL_ENABLED: + return ConfigurationValues.SSLEnabled; + case STORAGE_DOMAIN_NAME_SIZE_LIMIT: + return ConfigurationValues.StorageDomainNameSizeLimit; + case STORAGE_POOL_NAME_SIZE_LIMIT: + return ConfigurationValues.StoragePoolNameSizeLimit; + case SUPPORTED_CLUSTER_LEVELS: + return ConfigurationValues.SupportedClusterLevels; + case SUPPORT_BRIDGES_REPORT_BY_VDSM: + return ConfigurationValues.SupportBridgesReportByVDSM; + case SUPPORT_FORCE_CREATE_VG: + return ConfigurationValues.SupportForceCreateVG; + case USER_DEFINED_VM_PROPERTIES: + return ConfigurationValues.UserDefinedVMProperties; + case VALID_NUM_OF_MONITORS: + return ConfigurationValues.ValidNumOfMonitors; + case VCPU_CONSUMPTION_PERCENTAGE: + return ConfigurationValues.VcpuConsumptionPercentage; + case VM32_BIT_MAX_MEMORY_SIZE_IN_MB: + return ConfigurationValues.VM32BitMaxMemorySizeInMB; + case VM64_BIT_MAX_MEMORY_SIZE_IN_MB: + return ConfigurationValues.VM64BitMaxMemorySizeInMB; + case VM_MIN_MEMORY_SIZE_IN_MB: + return ConfigurationValues.VMMinMemorySizeInMB; + case VM_POOL_LEASE_DAYS: + return ConfigurationValues.VmPoolLeaseDays; + case VM_POOL_LEASE_END_TIME: + return ConfigurationValues.VmPoolLeaseEndTime; + case VM_POOL_LEASE_START_TIME: + return ConfigurationValues.VmPoolLeaseStartTime; + case VM_PRIORITY_MAX_VALUE: + return ConfigurationValues.VmPriorityMaxValue; + case WAN_COLOR_DEPTH: + return ConfigurationValues.WANColorDepth; + case WAN_DISABLE_EFFECTS: + return ConfigurationValues.WANDisableEffects; + default: + return null; + + } + } +} diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java index 5a0c5d4..6905da6 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/HostMapper.java @@ -1,8 +1,6 @@ package org.ovirt.engine.api.restapi.types; import java.math.BigDecimal; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; import java.util.HashMap; import java.util.Map; @@ -32,6 +30,7 @@ import org.ovirt.engine.api.model.TransparentHugePages; import org.ovirt.engine.api.model.Version; import org.ovirt.engine.api.model.VmSummary; +import org.ovirt.engine.api.restapi.utils.MD5Tools; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.businessentities.VDSType; @@ -49,7 +48,6 @@ // REVISIT retrieve from configuration private static final int DEFAULT_VDSM_PORT = 54321; private static final String MD5_FILE_SIGNATURE = "md5"; - private static final String MD5_SECURITY_ALGORITHM = "MD5"; private static final String HOST_OS_DELEIMITER = " - "; @@ -491,12 +489,6 @@ public static NGuid generateHookId(String eventName, String hookName, String md5) { String idString = eventName + hookName + md5; - try { - byte[] hash = MessageDigest.getInstance(MD5_SECURITY_ALGORITHM).digest(idString.getBytes()); - NGuid guid = new NGuid(hash, true); - return guid; - } catch (NoSuchAlgorithmException e) { - throw new IllegalStateException(e); // never happens, MD5 algorithm exists - } + return MD5Tools.createGuidUsingMd5(idString); } } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MD5Tools.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MD5Tools.java new file mode 100644 index 0000000..8222dd0 --- /dev/null +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/utils/MD5Tools.java @@ -0,0 +1,21 @@ +package org.ovirt.engine.api.restapi.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import org.ovirt.engine.core.compat.NGuid; + +public class MD5Tools { + + private static final String MD5_SECURITY_ALGORITHM = "MD5"; + + public static NGuid createGuidUsingMd5(String id) { + byte[] hash; + try { + hash = MessageDigest.getInstance(MD5_SECURITY_ALGORITHM).digest(id.getBytes()); + } catch (NoSuchAlgorithmException e) { + throw new IllegalStateException(e); // never happens, MD5 algorithm exists + } + return new NGuid(hash, true); + } +} -- To view, visit http://gerrit.ovirt.org/11468 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3d5cf3a09cfbf4bfb7586ba296e13f71386c396f Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ori Liel <ol...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches