Moti Asayag has uploaded a new change for review.
Change subject: restapi: Support katello errata for vms
......................................................................
restapi: Support katello errata for vms
The katello errata will be reported for vms, registered to katello
server and the guest agent report the appropriate FQDN which identifies
the vm on the katello server as a content host:
GET /api/vms/{vm:id}/katelloerrata
GET /api/vms/{vm:id}/katelloerrata/{katelloerrata:id}
There are no other actions supported for host errata via the api.
Feature-page: http://www.ovirt.org/Home/Features/KatelloIntegration
Change-Id: I8cec37546280393725b64506fdd0d6e37c1af410
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/VmResource.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/BackendVmResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErrataResource.java
A
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErratumResource.java
6 files changed, 141 insertions(+), 0 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/21/40721/1
diff --git
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
index 32787b5..897f8a5 100644
---
a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
+++
b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/VmResource.java
@@ -28,6 +28,7 @@
import org.ovirt.engine.api.model.CdRom;
import org.ovirt.engine.api.model.CdRoms;
import org.ovirt.engine.api.model.VM;
+import
org.ovirt.engine.api.resource.externalhostproviders.KatelloErrataResource;
@Produces({ApiMediaType.APPLICATION_XML, ApiMediaType.APPLICATION_JSON,
ApiMediaType.APPLICATION_X_YAML})
public interface VmResource extends UpdatableResource<VM>,
AsynchronouslyCreatedResource, MeasurableResource {
@@ -171,4 +172,6 @@
@Path("sessions")
public VmSessionsResource getVmSessionsResource();
+ @Path("katelloerrata")
+ public KatelloErrataResource getKatelloErrataResource();
}
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 fb81ccc..62ee137 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
@@ -5547,6 +5547,7 @@
<xs:element name="summary" type="xs:string" minOccurs="0"
maxOccurs="1"/>
<xs:element ref="packages" minOccurs="0" maxOccurs="1"/>
<xs:element ref="host" minOccurs="0" maxOccurs="1"/>
+ <xs:element ref="vm" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
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 5e72981..98c3bcc 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
@@ -818,6 +818,13 @@
signatures:
- mandatoryArguments: {action.maintenance_enabled: 'xs:boolean'}
description: enable or disable maintenance mode for this virtual
machine
+- name: /vms/{vm:id}/katelloerrata|rel=get
+ description: get the list of errata available for the vm
+ request:
+ urlparams:
+ max: {context: matrix, type: 'xs:int', value: 'max results', required:
false}
+- name: /vms/{vm:id}/katelloerrata/{katelloerratum:id}|rel=get
+ description: get the details of the specific erratum available for the vm
- name: /disks|rel=get
description: get a list of disks in the system
request:
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
index 0f53f82..08b648a 100644
---
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java
@@ -5,9 +5,11 @@
import java.util.List;
import java.util.Set;
+
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
+
import org.ovirt.engine.api.common.util.DetailHelper;
import org.ovirt.engine.api.common.util.QueryHelper;
import org.ovirt.engine.api.model.Action;
@@ -38,7 +40,9 @@
import org.ovirt.engine.api.resource.VmResource;
import org.ovirt.engine.api.resource.VmSessionsResource;
import org.ovirt.engine.api.resource.WatchdogsResource;
+import
org.ovirt.engine.api.resource.externalhostproviders.KatelloErrataResource;
import org.ovirt.engine.api.restapi.logging.Messages;
+import
org.ovirt.engine.api.restapi.resource.externalhostproviders.BackendHostKatelloErrataResource;
import org.ovirt.engine.api.restapi.types.RngDeviceMapper;
import org.ovirt.engine.api.restapi.types.VmMapper;
import org.ovirt.engine.api.restapi.util.DisplayHelper;
@@ -647,4 +651,9 @@
public VmNumaNodesResource getVirtualNumaNodesResource() {
return inject(new BackendVmNumaNodesResource(guid));
}
+
+ @Override
+ public KatelloErrataResource getKatelloErrataResource() {
+ return inject(new BackendHostKatelloErrataResource(id));
+ }
}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErrataResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErrataResource.java
new file mode 100644
index 0000000..6e91ee2
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErrataResource.java
@@ -0,0 +1,65 @@
+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.KatelloErrata;
+import org.ovirt.engine.api.model.KatelloErratum;
+import org.ovirt.engine.api.model.VM;
+import
org.ovirt.engine.api.resource.externalhostproviders.KatelloErrataResource;
+import
org.ovirt.engine.api.resource.externalhostproviders.KatelloErratumResource;
+import org.ovirt.engine.api.restapi.resource.AbstractBackendCollectionResource;
+import org.ovirt.engine.api.restapi.resource.SingleEntityResource;
+import org.ovirt.engine.core.common.businessentities.Erratum;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+
+public class BackendVmKatelloErrataResource extends
AbstractBackendCollectionResource<KatelloErratum, Erratum> implements
KatelloErrataResource {
+
+ private String vmId;
+
+ public BackendVmKatelloErrataResource(String vmId) {
+ super(KatelloErratum.class, Erratum.class);
+ this.vmId = vmId;
+ }
+
+ @Override
+ public KatelloErrata list() {
+ return mapCollection(getBackendCollection(VdcQueryType.GetErrataForVm,
new IdQueryParameters(asGuid(vmId))));
+ }
+
+ private KatelloErrata mapCollection(List<Erratum> entities) {
+ KatelloErrata collection = new KatelloErrata();
+ for (org.ovirt.engine.core.common.businessentities.Erratum entity :
entities) {
+ collection.getKatelloErrata().add(addLinks(populate(map(entity),
entity), VM.class));
+ }
+
+ return collection;
+ }
+
+ @SingleEntityResource
+ @Override
+ public KatelloErratumResource getKatelloErratumSubResource(String id) {
+ return inject(new BackendVmKatelloErratumResource(id, vmId));
+ }
+
+ @Override
+ protected Response performRemove(String id) {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ protected KatelloErratum doPopulate(KatelloErratum model, Erratum entity) {
+ return model;
+ }
+
+ @Override
+ protected KatelloErratum addParents(KatelloErratum erratum) {
+ VM vm = new VM();
+ vm.setId(vmId);
+ erratum.setVm(vm);
+ return super.addParents(erratum);
+ }
+}
diff --git
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErratumResource.java
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErratumResource.java
new file mode 100644
index 0000000..55821b4
--- /dev/null
+++
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/externalhostproviders/BackendVmKatelloErratumResource.java
@@ -0,0 +1,56 @@
+package org.ovirt.engine.api.restapi.resource.externalhostproviders;
+
+import static org.ovirt.engine.api.restapi.utils.HexUtils.hex2string;
+
+import org.ovirt.engine.api.model.BaseResource;
+import org.ovirt.engine.api.model.KatelloErratum;
+import org.ovirt.engine.api.model.VM;
+import
org.ovirt.engine.api.resource.externalhostproviders.KatelloErratumResource;
+import org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource;
+import org.ovirt.engine.core.common.businessentities.Erratum;
+import org.ovirt.engine.core.common.queries.HostErratumQueryParameters;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+public class BackendVmKatelloErratumResource extends
AbstractBackendSubResource<KatelloErratum, Erratum> implements
KatelloErratumResource {
+
+ private String vmId;
+
+ public BackendVmKatelloErratumResource(String id, String vmId) {
+ super(id, KatelloErratum.class, Erratum.class);
+ this.vmId = vmId;
+ }
+
+ @Override
+ public KatelloErratum get() {
+ return performGet(VdcQueryType.GetErratumByIdForVm,
+ new HostErratumQueryParameters(asGuid(vmId), hex2string(id)),
+ VM.class);
+ }
+
+ @Override
+ protected KatelloErratum doPopulate(KatelloErratum model, Erratum entity) {
+ return model;
+ }
+
+ @Override
+ protected KatelloErratum addParents(KatelloErratum erratum) {
+ VM vm = new VM();
+ vm.setId(vmId);
+ erratum.setVm(vm);
+ return super.addParents(erratum);
+ }
+
+ @Override
+ protected KatelloErratum addLinks(KatelloErratum model,
+ Class<? extends BaseResource> suggestedParent,
+ String... subCollectionMembersToExclude) {
+ return super.addLinks(model, VM.class);
+ }
+
+ @Override
+ protected Guid asGuidOr404(String id) {
+ // The identifier isn't a UUID.
+ return null;
+ }
+}
--
To view, visit https://gerrit.ovirt.org/40721
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8cec37546280393725b64506fdd0d6e37c1af410
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