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