Moti Asayag has uploaded a new change for review.

Change subject: engine: Add Label/Unlabel Nic commands
......................................................................

engine: Add Label/Unlabel Nic commands

The commands will be used mainly from the restapi
to label or unlabel nics with a specific label.

Change-Id: I73a76c66f4f4c1be2aa59952c50cc9829633d572
Bug-Url: https://bugzilla.redhat.com/1040586
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LabelNicParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
M 
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
M 
frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
M 
frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
M 
frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
11 files changed, 297 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/70/22870/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java
new file mode 100644
index 0000000..ecfb816
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java
@@ -0,0 +1,123 @@
+package org.ovirt.engine.core.bll.network.host;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.CommandBase;
+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.LabelNicParameters;
+import org.ovirt.engine.core.common.action.SetupNetworksParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.validation.group.CreateEntity;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.utils.NetworkUtils;
+import org.ovirt.engine.core.utils.transaction.TransactionMethod;
+import org.ovirt.engine.core.utils.transaction.TransactionSupport;
+
+public class LabelNicCommand<T extends LabelNicParameters> extends 
CommandBase<T> {
+
+    private VdsNetworkInterface nic;
+
+    public LabelNicCommand(T parameters) {
+        super(parameters);
+        setVdsId(getNic() == null ? null : getNic().getVdsId());
+    }
+
+    @Override
+    protected void executeCommand() {
+        if (getNic().getLabels() == null) {
+            getNic().setLabels(new HashSet<String>());
+        }
+
+        getNic().getLabels().add(getLabel());
+
+        TransactionSupport.executeInNewTransaction(new 
TransactionMethod<Void>() {
+
+            @Override
+            public Void runInTransaction() {
+                getDbFacade().getInterfaceDao().saveInterfaceForVds(getNic());
+                return null;
+            }
+        });
+
+        VdcReturnValueBase result = 
getBackend().runAction(VdcActionType.SetupNetworks, 
createSetupNetworkParameters());
+        if (!result.getSucceeded()) {
+            propagateFailure(result);
+        }
+
+        getReturnValue().setActionReturnValue(getLabel());
+        setSucceeded(result.getSucceeded());
+    }
+
+    private SetupNetworksParameters createSetupNetworkParameters() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__ADD);
+        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__LABEL);
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        if (getNic() == null) {
+            // nic doesn't exist
+            return failCanDoAction(null);
+        }
+
+        if (getNic().getLabels() != null && 
getNic().getLabels().contains(getParameters().getLabel())) {
+            // label already exist on nic
+            return failCanDoAction(null);
+        }
+
+        if (NetworkUtils.isVlan(getNic())) {
+            // can only label interface or bond
+            return failCanDoAction(null);
+        }
+
+        return true;
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        return getSucceeded() ? AuditLogType.LABEL_NIC : 
AuditLogType.LABEL_NIC_FAILED;
+    }
+
+    @Override
+    protected List<Class<?>> getValidationGroups() {
+        addValidationGroup(CreateEntity.class);
+        return super.getValidationGroups();
+    }
+
+    private VdsNetworkInterface getNic() {
+        if (nic == null) {
+            nic = 
getDbFacade().getInterfaceDao().get(getParameters().getNicId());
+        }
+
+        return nic;
+    }
+
+    public String getNickName() {
+        return getNic().getName();
+    }
+
+    public String getLabel() {
+        return getParameters().getLabel();
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        Guid hostId = getNic() == null ? null : getNic().getVdsId();
+        return Collections.singletonList(new PermissionSubject(hostId,
+                VdcObjectType.VDS,
+                getActionType().getActionGroup()));
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java
new file mode 100644
index 0000000..4fe2a94
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java
@@ -0,0 +1,112 @@
+package org.ovirt.engine.core.bll.network.host;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.ovirt.engine.core.bll.CommandBase;
+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.LabelNicParameters;
+import org.ovirt.engine.core.common.action.SetupNetworksParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.common.validation.group.CreateEntity;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.utils.transaction.TransactionMethod;
+import org.ovirt.engine.core.utils.transaction.TransactionSupport;
+
+public class UnlabelNicCommand<T extends LabelNicParameters> extends 
CommandBase<T> {
+
+    private VdsNetworkInterface nic;
+
+    public UnlabelNicCommand(T parameters) {
+        super(parameters);
+        setVdsId(getNic() == null ? null : getNic().getVdsId());
+    }
+
+    @Override
+    protected void executeCommand() {
+        getNic().getLabels().remove(getLabel());
+
+        TransactionSupport.executeInNewTransaction(new 
TransactionMethod<Void>() {
+
+            @Override
+            public Void runInTransaction() {
+                getDbFacade().getInterfaceDao().saveInterfaceForVds(getNic());
+                return null;
+            }
+        });
+
+        VdcReturnValueBase result = 
getBackend().runAction(VdcActionType.SetupNetworks, 
createSetupNetworkParameters());
+        if (!result.getSucceeded()) {
+            propagateFailure(result);
+        }
+
+        getReturnValue().setActionReturnValue(getLabel());
+        setSucceeded(result.getSucceeded());
+    }
+
+    private SetupNetworksParameters createSetupNetworkParameters() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    protected void setActionMessageParameters() {
+        addCanDoActionMessage(VdcBllMessages.VAR__ACTION__REMOVE);
+        addCanDoActionMessage(VdcBllMessages.VAR__TYPE__LABEL);
+    }
+
+    @Override
+    protected boolean canDoAction() {
+        if (getNic() == null) {
+            // nic doesn't exist
+            return failCanDoAction(null);
+        }
+
+        if (getNic().getLabels() == null || 
!getNic().getLabels().contains(getParameters().getLabel())) {
+            // label already exist on nic
+            return failCanDoAction(null);
+        }
+
+        return true;
+    }
+
+    @Override
+    public AuditLogType getAuditLogTypeValue() {
+        return getSucceeded() ? AuditLogType.UNLABEL_NIC : 
AuditLogType.UNLABEL_NIC_FAILED;
+    }
+
+    @Override
+    protected List<Class<?>> getValidationGroups() {
+        addValidationGroup(CreateEntity.class);
+        return super.getValidationGroups();
+    }
+
+    private VdsNetworkInterface getNic() {
+        if (nic == null) {
+            nic = 
getDbFacade().getInterfaceDao().get(getParameters().getNicId());
+        }
+
+        return nic;
+    }
+
+    public String getNickName() {
+        return getNic().getName();
+    }
+
+    public String getLabel() {
+        return getParameters().getLabel();
+    }
+
+    @Override
+    public List<PermissionSubject> getPermissionCheckSubjects() {
+        Guid hostId = getNic() == null ? null : getNic().getVdsId();
+        return Collections.singletonList(new PermissionSubject(hostId,
+                VdcObjectType.VDS,
+                getActionType().getActionGroup()));
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
index c99844c..91ef3c3 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
@@ -607,6 +607,10 @@
     LABEL_NETWORK_FAILED(1133),
     UNLABEL_NETWORK(1134),
     UNLABEL_NETWORK_FAILED(1135),
+    LABEL_NIC(1136),
+    LABEL_NIC_FAILED(1137),
+    UNLABEL_NIC(1138),
+    UNLABEL_NIC_FAILED(1139),
 
     // Import/Export
     IMPORTEXPORT_STARTING_EXPORT_VM(1162),
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LabelNicParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LabelNicParameters.java
new file mode 100644
index 0000000..2f4af17
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/LabelNicParameters.java
@@ -0,0 +1,43 @@
+package org.ovirt.engine.core.common.action;
+
+import javax.validation.constraints.NotNull;
+
+import org.ovirt.engine.core.common.validation.annotation.ValidName;
+import org.ovirt.engine.core.common.validation.group.CreateEntity;
+import org.ovirt.engine.core.compat.Guid;
+
+public class LabelNicParameters extends VdcActionParametersBase {
+
+    private static final long serialVersionUID = 657263466320044730L;
+
+    @NotNull
+    private Guid nicId;
+
+    @NotNull
+    @ValidName(message = "NETWORK_LABEL_FORMAT_INVALID", groups = { 
CreateEntity.class })
+    private String label;
+
+    public LabelNicParameters() {
+    }
+
+    public LabelNicParameters(Guid nicId, String label) {
+        this.setNicId(nicId);
+        this.label = label;
+    }
+
+    public Guid getNicId() {
+        return nicId;
+    }
+
+    public void setNicId(Guid nicId) {
+        this.nicId = nicId;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index 6f776f7..6b8182c 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -22,6 +22,7 @@
     VAR__TYPE__NETWORK,
     VAR__TYPE__NETWORKS,
     VAR__TYPE__VNIC_PROFILE,
+    VAR__TYPE__LABEL,
     VAR__TYPE__PROVIDER,
     VAR__TYPE__PROVIDER_CERTIFICATE_CHAIN,
     VAR__TYPE__VM_DISK,
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
index cf3a0b2..0f9a486 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
@@ -827,6 +827,10 @@
         severities.put(AuditLogType.LABEL_NETWORK_FAILED, 
AuditLogSeverity.ERROR);
         severities.put(AuditLogType.UNLABEL_NETWORK, AuditLogSeverity.NORMAL);
         severities.put(AuditLogType.UNLABEL_NETWORK_FAILED, 
AuditLogSeverity.ERROR);
+        severities.put(AuditLogType.LABEL_NIC, AuditLogSeverity.NORMAL);
+        severities.put(AuditLogType.LABEL_NIC_FAILED, AuditLogSeverity.ERROR);
+        severities.put(AuditLogType.UNLABEL_NIC, AuditLogSeverity.NORMAL);
+        severities.put(AuditLogType.UNLABEL_NIC_FAILED, 
AuditLogSeverity.ERROR);
     }
 
     private static void initExtrnalEvents() {
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
index 1dc4d92..919a4e1 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -240,6 +240,7 @@
 VAR__TYPE__NETWORK=$type Network
 VAR__TYPE__NETWORKS=$type Networks
 VAR__TYPE__VNIC_PROFILE=$type VM network interface profile
+VAR__TYPE__LABEL=$type Label
 VAR__TYPE__PROVIDER=$type provider
 VAR__TYPE__PROVIDER_CERTIFICATE_CHAIN=$type provider certificate chain
 VAR__TYPE__VM=$type VM
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
index 4acf6c5..e38c1de 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
@@ -446,6 +446,10 @@
 LABEL_NETWORK_FAILED=Failed to label network ${NetworkName} with label 
${Label} in data-center ${StoragePoolName}.
 UNLABEL_NETWORK=Network ${NetworkName} was unlabeled in data-center 
${StoragePoolName}.
 UNLABEL_NETWORK_FAILED=Failed to unlabel network ${NetworkName} in data-center 
${StoragePoolName}.
+LABEL_NIC=Network interface card ${NicName} was labeled ${Label} on host 
${VdsName}.
+LABEL_NIC_FAILED=Failed to label network interface card ${NicName} with label 
${Label} on host ${VdsName}.
+UNLABEL_NIC=Label ${Label} was removed from network interface card ${NicName} 
on host ${VdsName}.
+UNLABEL_NIC_FAILED=Failed to remove label ${Label} from network interface card 
${NicName} on host ${VdsName}.
 PROVIDER_ADDED=Provider ${ProviderName} was added. (User: ${UserName})
 PROVIDER_ADDITION_FAILED=Failed to add provider ${ProviderName}. (User: 
${UserName})
 PROVIDER_UPDATED=Provider ${ProviderName} was updated. (User: ${UserName})
diff --git 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
index 0c0afda..5893093 100644
--- 
a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
+++ 
b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java
@@ -638,6 +638,9 @@
     @DefaultStringValue("$type Network")
     String VAR__TYPE__NETWORK();
 
+    @DefaultStringValue("$type Label")
+    String VAR__TYPE__LABEL();
+
     @DefaultStringValue("$type VM network interface profile")
     String VAR__TYPE__VNIC_PROFILE();
 
diff --git 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 86cf739..ffee39a 100644
--- 
a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -236,6 +236,7 @@
 VAR__ENTITIES__HOSTS=$entities hosts
 VAR__TYPE__NETWORK=$type Network
 VAR__TYPE__NETWORKS=$type Networks
+VAR__TYPE__LABEL=$type Label
 VAR__TYPE__VNIC_PROFILE=$type VM network interface profile
 VAR__TYPE__PROVIDER=$type provider
 VAR__TYPE__PROVIDER_CERTIFICATE_CHAIN=$type provider certificate chain
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
index 9f17e51..dcdde9f 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
+++ 
b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
@@ -237,6 +237,7 @@
 VAR__ENTITIES__HOSTS=$entities hosts
 VAR__TYPE__NETWORK=$type Network
 VAR__TYPE__NETWORKS=$type Networks
+VAR__TYPE__LABEL=$type Label
 VAR__TYPE__VNIC_PROFILE=$type VM network interface profile
 VAR__TYPE__PROVIDER=$type provider
 VAR__TYPE__PROVIDER_CERTIFICATE_CHAIN=$type provider certificate chain


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I73a76c66f4f4c1be2aa59952c50cc9829633d572
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