Moti Asayag has uploaded a new change for review.
Change subject: restapi: Report available errata for host
......................................................................
restapi: Report available errata for host
The errata will be reported only on host level, as a
bulk (all of the errata) via:
GET /api/hosts/{host:id}/errata
No other actions are supported for host errata via the
api.
Feature page:
http://www.ovirt.org/index.php?title=Home/Features/UpgradeManager
Change-Id: Iad98a8066bd0f002cd58129ce583bc932afee8bc
Bug-Url: https://bugzilla.redhat.com/1157377
Signed-off-by: Moti Asayag <[email protected]>
---
M
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
A
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErrataResource.java
A
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErratumResource.java
M
backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
M
backend/manager/modules/restapi/interface/definition/src/main/resources/api.xsd
M
backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErrataResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErratumResource.java
M
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
A
backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ErratumMapper.java
M
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ApplicationMapperTest.java
A
backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ErratumMapperTest.java
14 files changed, 362 insertions(+), 8 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/36/37436/1
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
index 7de98a7..d7d75a2 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/HostResource.java
@@ -16,8 +16,8 @@
package org.ovirt.engine.api.resource;
-import javax.ws.rs.Path;
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;
@@ -25,6 +25,7 @@
import org.ovirt.engine.api.model.Action;
import org.ovirt.engine.api.model.Actionable;
import org.ovirt.engine.api.model.Host;
+import org.ovirt.engine.api.resource.externalhostproviders.ErrataResource;
@Produces({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML})
public interface HostResource extends UpdatableResource<Host>,
MeasurableResource {
@@ -102,4 +103,7 @@
@Path("fenceagents")
public FenceAgentsResource getFenceAgentsResource();
+
+ @Path("errata")
+ public ErrataResource getErrataResource();
}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErrataResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErrataResource.java
new file mode 100644
index 0000000..615b9d0
--- /dev/null
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErrataResource.java
@@ -0,0 +1,16 @@
+package org.ovirt.engine.api.resource.externalhostproviders;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+
+import org.ovirt.engine.api.model.Errata;
+import org.ovirt.engine.api.resource.ApiMediaType;
+
+@Produces({ ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+public interface ErrataResource {
+
+ @GET
+ Errata list();
+
+ ErratumResource getErratumSubResource(String id);
+}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErratumResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErratumResource.java
new file mode 100644
index 0000000..a5a133a
--- /dev/null
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/externalhostproviders/ErratumResource.java
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2010 Red Hat, Inc.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+package org.ovirt.engine.api.resource.externalhostproviders;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Produces;
+
+import org.ovirt.engine.api.model.Erratum;
+import org.ovirt.engine.api.resource.ApiMediaType;
+
+@Produces( { ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML })
+public interface ErratumResource {
+
+ @GET
+ public Erratum get();
+}
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
index 28ddfda..01d846f 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/utils/LinkHelper.java
@@ -45,6 +45,7 @@
import org.ovirt.engine.api.model.DiskProfile;
import org.ovirt.engine.api.model.DiskSnapshot;
import org.ovirt.engine.api.model.Domain;
+import org.ovirt.engine.api.model.Erratum;
import org.ovirt.engine.api.model.Event;
import org.ovirt.engine.api.model.ExternalComputeResource;
import org.ovirt.engine.api.model.ExternalDiscoveredHost;
@@ -72,18 +73,18 @@
import org.ovirt.engine.api.model.NIC;
import org.ovirt.engine.api.model.Network;
import org.ovirt.engine.api.model.NumaNode;
-import org.ovirt.engine.api.model.OperatingSystemInfo;
import org.ovirt.engine.api.model.OpenStackImage;
import org.ovirt.engine.api.model.OpenStackImageProvider;
import org.ovirt.engine.api.model.OpenStackNetwork;
import org.ovirt.engine.api.model.OpenStackNetworkProvider;
import org.ovirt.engine.api.model.OpenStackSubnet;
+import org.ovirt.engine.api.model.OperatingSystemInfo;
import org.ovirt.engine.api.model.Parameter;
import org.ovirt.engine.api.model.ParametersSet;
import org.ovirt.engine.api.model.Permission;
import org.ovirt.engine.api.model.Permit;
-import org.ovirt.engine.api.model.Quota;
import org.ovirt.engine.api.model.QoS;
+import org.ovirt.engine.api.model.Quota;
import org.ovirt.engine.api.model.ReportedDevice;
import org.ovirt.engine.api.model.Request;
import org.ovirt.engine.api.model.Role;
@@ -125,12 +126,12 @@
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.CpuProfileResource;
+import org.ovirt.engine.api.resource.CpuProfilesResource;
import org.ovirt.engine.api.resource.DataCenterResource;
import org.ovirt.engine.api.resource.DataCentersResource;
import org.ovirt.engine.api.resource.DeviceResource;
import org.ovirt.engine.api.resource.DevicesResource;
-import org.ovirt.engine.api.resource.CpuProfileResource;
-import org.ovirt.engine.api.resource.CpuProfilesResource;
import org.ovirt.engine.api.resource.DiskProfileResource;
import org.ovirt.engine.api.resource.DiskProfilesResource;
import org.ovirt.engine.api.resource.DiskResource;
@@ -172,8 +173,8 @@
import org.ovirt.engine.api.resource.PermissionResource;
import org.ovirt.engine.api.resource.PermitResource;
import org.ovirt.engine.api.resource.PermitsResource;
-import org.ovirt.engine.api.resource.QosResource;
import org.ovirt.engine.api.resource.QoSsResource;
+import org.ovirt.engine.api.resource.QosResource;
import org.ovirt.engine.api.resource.QuotaResource;
import org.ovirt.engine.api.resource.QuotasResource;
import org.ovirt.engine.api.resource.ReadOnlyDeviceResource;
@@ -234,6 +235,8 @@
import org.ovirt.engine.api.resource.aaa.GroupsResource;
import org.ovirt.engine.api.resource.aaa.UserResource;
import org.ovirt.engine.api.resource.aaa.UsersResource;
+import org.ovirt.engine.api.resource.externalhostproviders.ErrataResource;
+import org.ovirt.engine.api.resource.externalhostproviders.ErratumResource;
import
org.ovirt.engine.api.resource.externalhostproviders.ExternalComputeResourceResource;
import
org.ovirt.engine.api.resource.externalhostproviders.ExternalComputeResourcesResource;
import
org.ovirt.engine.api.resource.externalhostproviders.ExternalDiscoveredHostResource;
@@ -559,6 +562,9 @@
map = new ParentToCollectionMap(FenceAgentResource.class,
FenceAgentsResource.class, Host.class);
TYPES.put(Agent.class, map);
+
+ map = new ParentToCollectionMap(ErratumResource.class,
ErrataResource.class, Host.class);
+ TYPES.put(Erratum.class, map);
}
/**
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 6e69ce6..9da7a80 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
@@ -1939,6 +1939,7 @@
<xs:element name="auto_numa_status" type="xs:string" minOccurs="0"
maxOccurs="1"/>
<xs:element name="numa_supported" type="xs:boolean" minOccurs="0"
maxOccurs="1"/>
<xs:element name="live_snapshot_support" type="xs:boolean"
minOccurs="0" maxOccurs="1" />
+ <xs:element ref="errata" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
@@ -5441,4 +5442,61 @@
</xs:complexContent>
</xs:complexType>
+ <xs:element name="errata" type="Errata"/>
+
+ <xs:element name="erratum" type="Erratum"/>
+
+ <xs:complexType name="Erratum">
+ <xs:complexContent>
+ <xs:extension base="BaseResource">
+ <xs:sequence>
+ <xs:element name="title" type="xs:string" minOccurs="0"
maxOccurs="1"/>
+ <xs:element name="type" type="xs:string" minOccurs="0"
maxOccurs="1"/>
+ <xs:element name="issued" type="xs:dateTime" minOccurs="0"
maxOccurs="1"/>
+ <xs:element name="severity" type="xs:string" minOccurs="0"
maxOccurs="1"/>
+ <xs:element name="solution" type="xs:string" minOccurs="0"
maxOccurs="1"/>
+ <xs:element name="summary" type="xs:string" minOccurs="0"
maxOccurs="1"/>
+ <xs:element ref="packages" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="Errata">
+ <xs:complexContent>
+ <xs:extension base="BaseResources">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:appinfo>
+ <jaxb:property name="Errata"/>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:element ref="erratum" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="packages" type="Packages"/>
+
+ <xs:element name="package" type="Package"/>
+
+ <xs:complexType name="Packages">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:appinfo>
+ <jaxb:property name="Packages"/>
+ </xs:appinfo>
+ </xs:annotation>
+ <xs:element ref="package" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="Package">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1">
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+
</xs:schema>
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
index 52e90a9..3ef3732 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
+++
b/backend/manager/modules/restapi/interface/definition/src/main/resources/rsdl_metadata.yaml
@@ -3054,6 +3054,15 @@
headers:
Content-Type: {value: application/xml|json, required: true}
Correlation-Id: {value: 'any string', required: false}
+- name: /hosts/{host:id}/errata|rel=get
+ description: get the list of errata available for the host
+ request:
+ body:
+ parameterType: null
+ signatures: []
+ urlparams:
+ max: {context: matrix, type: 'xs:int', value: 'max results', required:
false}
+ headers: {}
- name: /hosts/{host:id}/nics|rel=get
description: get the list of network interfaces for the host
request:
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
index c7641bb..e9a8c90 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostResource.java
@@ -30,16 +30,18 @@
import org.ovirt.engine.api.resource.HostResource;
import org.ovirt.engine.api.resource.HostStorageResource;
import org.ovirt.engine.api.resource.StatisticsResource;
+import org.ovirt.engine.api.resource.externalhostproviders.ErrataResource;
import org.ovirt.engine.api.restapi.model.AuthenticationMethod;
+import
org.ovirt.engine.api.restapi.resource.externalhostproviders.BackendHostErrataResource;
import org.ovirt.engine.api.restapi.types.DeprecatedPowerManagementMapper;
import org.ovirt.engine.api.restapi.types.FenceAgentMapper;
import org.ovirt.engine.api.utils.LinkHelper;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.action.ApproveVdsParameters;
import org.ovirt.engine.core.common.action.ChangeVDSClusterParameters;
+import org.ovirt.engine.core.common.action.FenceAgentCommandParameterBase;
import org.ovirt.engine.core.common.action.FenceVdsActionParameters;
import org.ovirt.engine.core.common.action.FenceVdsManualyParameters;
-import org.ovirt.engine.core.common.action.FenceAgentCommandParameterBase;
import org.ovirt.engine.core.common.action.ForceSelectSPMParameters;
import org.ovirt.engine.core.common.action.MaintenanceNumberOfVdssParameters;
import
org.ovirt.engine.core.common.action.StorageServerConnectionParametersBase;
@@ -526,4 +528,9 @@
public FenceAgentsResource getFenceAgentsResource() {
return inject(new BackendFenceAgentsResource(id));
}
+
+ @Override
+ public ErrataResource getErrataResource() {
+ return inject(new BackendHostErrataResource(id));
+ }
}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
index c0520db..aa949a3 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendHostsResource.java
@@ -45,7 +45,7 @@
private static final Logger log =
LoggerFactory.getLogger(BackendHostsResource.class);
private static final String DEFAULT_NAME = "Default";
static final String[] SUB_COLLECTIONS = { "storage", "nics", "numanodes",
"tags", "permissions", "statistics",
- "hooks", "fenceagents" };
+ "hooks", "fenceagents", "errata" };
static final String GLUSTERONLY_MODE_COLLECTIONS_TO_HIDE = "storage";
public BackendHostsResource() {
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErrataResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErrataResource.java
new file mode 100644
index 0000000..9950347
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErrataResource.java
@@ -0,0 +1,56 @@
+package org.ovirt.engine.api.restapi.resource.externalhostproviders;
+
+import java.util.List;
+
+import javax.ws.rs.core.Response;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.ovirt.engine.api.model.Errata;
+import org.ovirt.engine.api.model.Erratum;
+import org.ovirt.engine.api.resource.externalhostproviders.ErrataResource;
+import org.ovirt.engine.api.resource.externalhostproviders.ErratumResource;
+import org.ovirt.engine.api.restapi.resource.AbstractBackendCollectionResource;
+import org.ovirt.engine.api.restapi.resource.SingleEntityResource;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendHostErrataResource extends
AbstractBackendCollectionResource<Erratum,
org.ovirt.engine.core.common.businessentities.Erratum> implements
ErrataResource {
+
+ private String hostId;
+
+ public BackendHostErrataResource(String hostId) {
+ super(Erratum.class,
org.ovirt.engine.core.common.businessentities.Erratum.class);
+ this.hostId = hostId;
+ }
+
+ @Override
+ public Errata list() {
+ return
mapCollection(getBackendCollection(VdcQueryType.GetErrataByHostId,
+ new IdQueryParameters(asGuid(hostId))));
+ }
+
+ protected Errata
mapCollection(List<org.ovirt.engine.core.common.businessentities.Erratum>
entities) {
+ Errata collection = new Errata();
+ for (org.ovirt.engine.core.common.businessentities.Erratum entity :
entities) {
+ collection.getErrata().add(map(entity));
+ }
+
+ return collection;
+ }
+
+ @SingleEntityResource
+ @Override
+ public ErratumResource getErratumSubResource(String id) {
+ return inject(new BackendHostErratumResource(id, this));
+ }
+
+ @Override
+ protected Response performRemove(String id) {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ protected Erratum doPopulate(Erratum model,
org.ovirt.engine.core.common.businessentities.Erratum entity) {
+ throw new NotImplementedException();
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErratumResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErratumResource.java
new file mode 100644
index 0000000..d8d8b63
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendHostErratumResource.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.api.restapi.resource.externalhostproviders;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.ovirt.engine.api.model.Erratum;
+import org.ovirt.engine.api.resource.externalhostproviders.ErratumResource;
+import org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource;
+
+public class BackendHostErratumResource extends
AbstractBackendSubResource<Erratum,
org.ovirt.engine.core.common.businessentities.Erratum> implements
ErratumResource {
+
+ private BackendHostErrataResource parent;
+
+ public BackendHostErratumResource(String id, BackendHostErrataResource
parent) {
+ super(id, Erratum.class,
org.ovirt.engine.core.common.businessentities.Erratum.class);
+ this.parent = parent;
+ }
+
+ public BackendHostErrataResource getParent() {
+ return parent;
+ }
+
+ @Override
+ public Erratum get() {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ protected Erratum doPopulate(Erratum model,
org.ovirt.engine.core.common.businessentities.Erratum entity) {
+ return model;
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
index cb99831..2e416c1 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/utils/FeaturesHelper.java
@@ -95,6 +95,7 @@
if (VersionUtils.greaterOrEqual(version,
BackendCapabilitiesResource.VERSION_3_6)) {
addExternalHostProvidersFeature(features);
addOpenStackImageProvidersFeature(features);
+ addErrataForHostsFeature(features);
}
return features;
}
@@ -536,4 +537,11 @@
feature.setDescription("Add/modify/remove OpenStack image providers.");
features.getFeature().add(feature);
}
+
+ private void addErrataForHostsFeature(Features features) {
+ Feature feature = new Feature();
+ feature.setName("Host Errata");
+ feature.setDescription("View available errata for hosts.");
+ features.getFeature().add(feature);
+ }
}
diff --git
a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ErratumMapper.java
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ErratumMapper.java
new file mode 100644
index 0000000..c359f65
--- /dev/null
+++
b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/ErratumMapper.java
@@ -0,0 +1,85 @@
+package org.ovirt.engine.api.restapi.types;
+
+import java.util.ArrayList;
+
+import org.ovirt.engine.api.model.Erratum;
+import org.ovirt.engine.api.model.Package;
+import org.ovirt.engine.api.model.Packages;
+import org.ovirt.engine.core.common.businessentities.Erratum.ErrataSeverity;
+import org.ovirt.engine.core.common.businessentities.Erratum.ErrataType;
+
+public class ErratumMapper {
+
+ @Mapping(from =
org.ovirt.engine.core.common.businessentities.Erratum.class, to = Erratum.class)
+ public static Erratum
map(org.ovirt.engine.core.common.businessentities.Erratum entity, Erratum
model) {
+ model = model == null ? new Erratum() : model;
+ model.setId(entity.getId());
+ model.setTitle(entity.getTitle());
+ model.setSummary(entity.getSummary());
+ model.setSolution(entity.getSolution());
+ model.setDescription(entity.getDescription());
+ model.setIssued(DateMapper.map(entity.getIssued(), null));
+ model.setSeverity(entity.getSeverity() == null ? null :
entity.getSeverity().getDescription());
+ model.setType(entity.getType() == null ? null :
entity.getType().getDescription());
+ if (entity.getPackages() != null && !entity.getPackages().isEmpty()) {
+ Packages packages = new Packages();
+ for (String packageName : entity.getPackages()) {
+ Package p = new Package();
+ p.setName(packageName);
+ packages.getPackages().add(p);
+ }
+
+ model.setPackages(packages);
+ }
+
+ return model;
+ }
+
+ @Mapping(from = Erratum.class, to =
org.ovirt.engine.core.common.businessentities.Erratum.class)
+ public static org.ovirt.engine.core.common.businessentities.Erratum
map(Erratum model,
+ org.ovirt.engine.core.common.businessentities.Erratum template) {
+ org.ovirt.engine.core.common.businessentities.Erratum entity =
+ template != null ? template : new
org.ovirt.engine.core.common.businessentities.Erratum();
+
+ if (model.isSetId()) {
+ entity.setId(model.getId());
+ }
+
+ if (model.isSetTitle()) {
+ entity.setTitle(model.getTitle());
+ }
+
+ if (model.isSetSummary()) {
+ entity.setSummary(model.getSummary());
+ }
+
+ if (model.isSetSolution()) {
+ entity.setSolution(model.getSolution());
+ }
+
+ if (model.isSetDescription()) {
+ entity.setDescription(model.getDescription());
+ }
+
+ if (model.isSetIssued()) {
+
entity.setIssued(model.getIssued().toGregorianCalendar().getTime());
+ }
+
+ if (model.isSetSeverity()) {
+
entity.setSeverity(ErrataSeverity.byDescription(model.getSeverity()));
+ }
+
+ if (model.isSetType()) {
+ entity.setType(ErrataType.byDescription(model.getType()));
+ }
+
+ if (model.isSetPackages() &&
!model.getPackages().getPackages().isEmpty()) {
+ entity.setPackages(new
ArrayList<String>(model.getPackages().getPackages().size()));
+ for (Package p : model.getPackages().getPackages()) {
+ entity.getPackages().add(p.getName());
+ }
+ }
+
+ return entity;
+ }
+}
diff --git
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ApplicationMapperTest.java
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ApplicationMapperTest.java
index 71b5eca..f76a082 100644
---
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ApplicationMapperTest.java
+++
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ApplicationMapperTest.java
@@ -1,6 +1,7 @@
package org.ovirt.engine.api.restapi.types;
import static org.ovirt.engine.api.restapi.types.MappingTestHelper.populate;
+
import org.junit.Test;
import org.ovirt.engine.api.model.Application;
import org.ovirt.engine.core.common.businessentities.VM;
diff --git
a/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ErratumMapperTest.java
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ErratumMapperTest.java
new file mode 100644
index 0000000..631d184
--- /dev/null
+++
b/backend/manager/modules/restapi/types/src/test/java/org/ovirt/engine/api/restapi/types/ErratumMapperTest.java
@@ -0,0 +1,44 @@
+package org.ovirt.engine.api.restapi.types;
+
+import java.util.Date;
+
+import org.ovirt.engine.api.model.Erratum;
+import org.ovirt.engine.core.common.businessentities.Erratum.ErrataSeverity;
+import org.ovirt.engine.core.common.businessentities.Erratum.ErrataType;
+
+public class ErratumMapperTest extends AbstractInvertibleMappingTest<Erratum,
org.ovirt.engine.core.common.businessentities.Erratum,
org.ovirt.engine.core.common.businessentities.Erratum> {
+
+ private static final Date DATE = new Date();
+
+ public ErratumMapperTest() {
+ super(Erratum.class,
+ org.ovirt.engine.core.common.businessentities.Erratum.class,
+ org.ovirt.engine.core.common.businessentities.Erratum.class);
+ }
+
+ @Override
+ protected void verify(Erratum model, Erratum transform) {
+ assertEquals(model.getId(), transform.getId());
+ assertEquals(model.getTitle(), transform.getTitle());
+ assertEquals(model.getSummary(), transform.getSummary());
+ assertEquals(model.getSolution(), transform.getSolution());
+ assertEquals(model.getDescription(), transform.getDescription());
+ assertEquals(model.getIssued(), transform.getIssued());
+ assertEquals(model.getSeverity(), transform.getSeverity());
+ assertEquals(model.getType(), transform.getType());
+ assertNotNull(model.getPackages());
+ assertNotNull(transform.getPackages());
+ assertEquals(model.getPackages().getPackages().size(),
transform.getPackages().getPackages().size());
+ for (int i = 0; i < model.getPackages().getPackages().size(); i++) {
+ assertEquals(model.getPackages().getPackages().get(i).getName(),
+ transform.getPackages().getPackages().get(i).getName());
+ }
+ }
+
+ protected Erratum postPopulate(Erratum model) {
+ model.setIssued(DateMapper.map(DATE, null));
+ model.setSeverity(ErrataSeverity.MODERATE.getDescription());
+ model.setType(ErrataType.ENHANCEMENT.getDescription());
+ return super.postPopulate(model);
+ }
+}
--
To view, visit http://gerrit.ovirt.org/37436
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iad98a8066bd0f002cd58129ce583bc932afee8bc
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches