Eli Mesika has uploaded a new change for review.

Change subject: core[BLL]: Adding external status to host
......................................................................

core[BLL]: Adding external status to host

This patch handles the required changes in the AddExternalEventCommand

Change-Id: I271aa3f841a3820482d89a1675e28dcb75540277
Signed-off-by: emesika <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddExternalEventCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddExternalEventParameters.java
2 files changed, 36 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/95/40995/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddExternalEventCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddExternalEventCommand.java
index f27c238..1328463 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddExternalEventCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddExternalEventCommand.java
@@ -1,18 +1,27 @@
 package org.ovirt.engine.core.bll;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.AuditLogType;
+import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.AddExternalEventParameters;
+import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.AuditLog;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AlertDirector;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
+import org.ovirt.engine.core.dao.VdsDynamicDAO;
+
+import javax.inject.Inject;
 
 public class AddExternalEventCommand<T extends AddExternalEventParameters> 
extends ExternalEventCommandBase<T> {
     private static final String OVIRT="oVirt";
+
+    @Inject VdsDynamicDAO hostDao;
 
     public AddExternalEventCommand(T parameters) {
         super(parameters);
@@ -55,10 +64,28 @@
             setActionReturnValue(auditLog.getAuditLogId());
             setSucceeded(true);
         }
+        // Update host external status if set
+        if (hasHostExternalStatus()) {
+            
hostDao.updateExternalStatus(getParameters().getEvent().getVdsId(), 
getParameters().getExternalStatus());
+        }
     }
 
     @Override
     public List<PermissionSubject> getPermissionCheckSubjects() {
-        return getPermissionList(getParameters().getEvent());
+        // check for external host status modification
+        List<PermissionSubject> hostExtStatusUpdatePermissionsList = new 
ArrayList<>();
+        if (hasHostExternalStatus()) {
+            hostExtStatusUpdatePermissionsList.add(new PermissionSubject(new 
Guid(getParameters().getEvent().getVdsId().toString()),
+                    VdcObjectType.VDS, ActionGroup.EDIT_HOST_CONFIGURATION));
+        }
+        List<PermissionSubject> permissionList = 
getPermissionList(getParameters().getEvent());
+        List<PermissionSubject> joinedPermissionList = new ArrayList<>();
+        joinedPermissionList.addAll(hostExtStatusUpdatePermissionsList);
+        joinedPermissionList.addAll(permissionList);
+        return joinedPermissionList;
+    }
+
+    private boolean hasHostExternalStatus() {
+        return getParameters().getEvent().getVdsId() != null && 
getParameters().getExternalStatus() != null;
     }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddExternalEventParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddExternalEventParameters.java
index 176dd77..f33594e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddExternalEventParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddExternalEventParameters.java
@@ -1,21 +1,28 @@
 package org.ovirt.engine.core.common.action;
 
 import org.ovirt.engine.core.common.businessentities.AuditLog;
+import org.ovirt.engine.core.common.businessentities.ExternalStatus;
 
 public class AddExternalEventParameters extends VdcActionParametersBase {
     private static final long serialVersionUID = 7023971593753015624L;
 
     private AuditLog event;
+    private ExternalStatus externalStatus;
 
     public AuditLog getEvent() {
         return event;
     }
 
+    public ExternalStatus getExternalStatus() {
+        return externalStatus;
+    }
+
     public AddExternalEventParameters() {
     }
 
-    public AddExternalEventParameters(AuditLog event) {
+    public AddExternalEventParameters(AuditLog event, ExternalStatus 
externalStatus) {
         super();
         this.event = event;
+        this.externalStatus = externalStatus;
     }
 }


-- 
To view, visit https://gerrit.ovirt.org/40995
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I271aa3f841a3820482d89a1675e28dcb75540277
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Eli Mesika <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to