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