Moti Asayag has uploaded a new change for review.

Change subject: engine: Add option to create network for public use
......................................................................

engine: Add option to create network for public use

The patch adds an option on Network creation to define the
network for public use. If configured for public use, 'everyone'
will get permissions on the network with NetworkUser role.

The motivation is to allow easy access and management of network
so it could be accessed by the system's users.

In addition, since the Networks entities are now managed as part of
the MLA, the creator of the network will be granted with NetworkAdmin
role for the created network.

Change-Id: I14e046c7a98ab6f9de53bec5b8ccc73ac4ba672f
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddNetworkCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddNetworkStoragePoolParameters.java
2 files changed, 32 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/9541/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddNetworkCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddNetworkCommand.java
index fb666ea..b22b2f5 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddNetworkCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddNetworkCommand.java
@@ -3,11 +3,14 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.ovirt.engine.core.bll.MultiLevelAdministrationHandler;
+import org.ovirt.engine.core.bll.PredefinedRoles;
 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.AddNetworkStoragePoolParameters;
 import org.ovirt.engine.core.common.businessentities.Network;
+import org.ovirt.engine.core.common.businessentities.permissions;
 import org.ovirt.engine.core.common.validation.group.CreateEntity;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
@@ -24,6 +27,7 @@
     protected void executeCommand() {
         getParameters().getNetwork().setId(Guid.NewGuid());
         
DbFacade.getInstance().getNetworkDao().save(getParameters().getNetwork());
+        addPermissions();
         
getReturnValue().setActionReturnValue(getParameters().getNetwork().getId());
         setSucceeded(true);
     }
@@ -96,4 +100,22 @@
                 : getStoragePoolId().getValue(),
                 VdcObjectType.StoragePool, getActionType().getActionGroup()));
     }
+
+    private void addPermissions() {
+        addPermissionOnNetwork(getCurrentUser().getUserId(), 
PredefinedRoles.NETWORK_ADMIN);
+
+        // if the Network is for public use, set EVERYONE as a NETWORK_USER.
+        if (getParameters().isPublicUse()) {
+            
addPermissionOnNetwork(MultiLevelAdministrationHandler.EVERYONE_OBJECT_ID, 
PredefinedRoles.NETWORK_USER);
+        }
+    }
+
+    private void addPermissionOnNetwork(Guid userId, PredefinedRoles role) {
+        permissions perms = new permissions();
+        perms.setad_element_id(userId);
+        perms.setObjectType(VdcObjectType.Network);
+        perms.setObjectId(getParameters().getNetwork().getId());
+        perms.setrole_id(role.getId());
+        MultiLevelAdministrationHandler.addPermission(perms);
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddNetworkStoragePoolParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddNetworkStoragePoolParameters.java
index f84d1f3..f7566ab 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddNetworkStoragePoolParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddNetworkStoragePoolParameters.java
@@ -11,6 +11,8 @@
     @Valid
     private Network _network;
 
+    private boolean publicUse;
+
     public AddNetworkStoragePoolParameters(Guid storagePoolId, Network net) {
         super(storagePoolId);
         _network = net;
@@ -20,6 +22,14 @@
         return _network;
     }
 
+    public void setPublicUse(boolean publicUse) {
+        this.publicUse = publicUse;
+    }
+
+    public boolean isPublicUse() {
+        return publicUse;
+    }
+
     public AddNetworkStoragePoolParameters() {
     }
 }


--
To view, visit http://gerrit.ovirt.org/9541
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I14e046c7a98ab6f9de53bec5b8ccc73ac4ba672f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to