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

Reply via email to