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

Reply via email to