Eli Mesika has uploaded a new change for review. Change subject: REST API: Adding external status to API ......................................................................
REST API: Adding external status to API This patch adds handling the external_status field from the external event API call Change-Id: I4d748b1123c4dafc7776d79097eec8e94793bf1d Signed-off-by: emesika <emes...@redhat.com> --- 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/BackendEventsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/EventValidator.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/StorageDomainValidator.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java 6 files changed, 38 insertions(+), 9 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/37/42137/1 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 7f09316..d6f0e56 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 @@ -2821,6 +2821,7 @@ <xs:element name="type" type="xs:string" minOccurs="0"/> <xs:element ref="status" minOccurs="0" maxOccurs="1"/> + <xs:element name="external_status" type="Status" minOccurs="0" maxOccurs="1"/> <xs:element name="master" type="xs:boolean" minOccurs="0"/> <xs:element ref="storage" minOccurs="0"/> <!-- host is only relevant at creation and deletion time --> 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 696dd6d..96cb357 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 @@ -1614,8 +1614,8 @@ signatures: - mandatoryArguments: {event.description: 'xs:string', event.severity: 'xs:string', event.origin: 'xs:string', event.custom_id: 'xs:int'} optionalArguments: {event.flood_rate: 'xs:int', event.host.id: 'xs:string',event.host.external_status.state: 'xs:string',event.user.id: 'xs:string', - event.vm.id: 'xs:string',event.storage_domain.id: 'xs:string',event.template.id: 'xs:string', - event.cluster.id: 'xs:string',event.data_center.id: 'xs:string'} + event.vm.id: 'xs:string',event.storage_domain.id: 'xs:string',event.storage_domain.external_status.state: 'xs:string', + event.template.id: 'xs:string',event.cluster.id: 'xs:string',event.data_center.id: 'xs:string'} description: add a new event to the system - name: /groups/{group:id}|rel=get description: get the details of the specified group in the system diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendEventsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendEventsResource.java index a9f9535..ae72bb3 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendEventsResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendEventsResource.java @@ -77,15 +77,26 @@ public Response add(Event event) { validateParameters(event, "origin", "severity", "customId", "description"); validateEnums(Event.class, event); - boolean isExternalStateDefined = event.isSetHost() && + AddExternalEventParameters parameters; + boolean isHostExternalStateDefined = event.isSetHost() && event.getHost().isSetExternalStatus() && event.getHost().getExternalStatus().isSetState(); - AddExternalEventParameters parameters = isExternalStateDefined - ? new AddExternalEventParameters(map(event), - HostMapper.map(EntityExternalStatus.fromValue( - event.getHost().getExternalStatus().getState()), null)) - : new AddExternalEventParameters(map(event), null); - + boolean isStorageDomainExternalStateDefined = event.isSetStorageDomain() && + event.getStorageDomain().isSetExternalStatus() && + event.getStorageDomain().getExternalStatus().isSetState(); + if (isHostExternalStateDefined) { + parameters = new AddExternalEventParameters(map(event), + HostMapper.map(EntityExternalStatus.fromValue( + event.getHost().getExternalStatus().getState()), null)); + } + else if (isStorageDomainExternalStateDefined) { + parameters = new AddExternalEventParameters(map(event), + HostMapper.map(EntityExternalStatus.fromValue( + event.getStorageDomain().getExternalStatus().getState()), null)); + } + else{ + parameters = new AddExternalEventParameters(map(event), null); + } return performCreate(VdcActionType.AddExternalEvent, parameters, new QueryIdResolver<Long>(VdcQueryType.GetAuditLogById, GetAuditLogByIdParameters.class)); diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/EventValidator.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/EventValidator.java index 0a39b05..e0c2a02 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/EventValidator.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/EventValidator.java @@ -9,6 +9,7 @@ public class EventValidator implements Validator<Event> { private HostValidator hostValidator = new HostValidator(); + private StorageDomainValidator storageDomainValidator = new StorageDomainValidator(); @Override public void validateEnums(Event event) { @@ -18,5 +19,8 @@ if (event.isSetHost()) { hostValidator.validateEnums(event.getHost()); } + if (event.isSetStorageDomain()) { + storageDomainValidator.validateEnums(event.getStorageDomain()); + } } } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/StorageDomainValidator.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/StorageDomainValidator.java index ea619cb..4a8240f 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/StorageDomainValidator.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/validation/StorageDomainValidator.java @@ -1,5 +1,6 @@ package org.ovirt.engine.api.restapi.resource.validation; +import org.ovirt.engine.api.model.EntityExternalStatus; import org.ovirt.engine.api.model.NfsVersion; import org.ovirt.engine.api.model.StorageDomain; import org.ovirt.engine.api.model.StorageDomainType; @@ -26,6 +27,9 @@ if (storageDomain.isSetStorage() && storageDomain.getStorage().isSetNfsVersion()) { validateEnum(NfsVersion.class, storageDomain.getStorage().getNfsVersion(), true); } + if (storageDomain.isSetExternalStatus()) { + validateEnum(EntityExternalStatus.class, storageDomain.getExternalStatus().getState().toUpperCase()); + } } } } diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java index a1ae24a..e04cef8 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/StorageDomainMapper.java @@ -2,7 +2,9 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.api.common.util.StatusUtils; +import org.ovirt.engine.api.model.EntityExternalStatus; import org.ovirt.engine.api.model.NfsVersion; +import org.ovirt.engine.api.model.Status; import org.ovirt.engine.api.model.Storage; import org.ovirt.engine.api.model.StorageConnection; import org.ovirt.engine.api.model.StorageDomain; @@ -141,6 +143,13 @@ StorageDomainStatus status = map(entity.getStatus(), null); model.setStatus(status==null ? null : StatusUtils.create(status)); } + if (entity.getExternalStatus() != null) { + // Reuse enum mappings fro HostMapper + EntityExternalStatus entityExternalStatus = HostMapper.map(entity.getExternalStatus(), null); + Status hostStatus = new Status(); + hostStatus.setState(entityExternalStatus.value()); + model.setExternalStatus(hostStatus); + } model.setStorage(new Storage()); model.getStorage().setType(map(entity.getStorageType(), null)); if (entity.getStorageType() == org.ovirt.engine.core.common.businessentities.storage.StorageType.ISCSI || -- To view, visit https://gerrit.ovirt.org/42137 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4d748b1123c4dafc7776d79097eec8e94793bf1d Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Eli Mesika <emes...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches