Alona Kaplan has uploaded a new change for review. Change subject: webadmin: [Labels] SetupNetwork emphasize unconfigured interface ......................................................................
webadmin: [Labels] SetupNetwork emphasize unconfigured interface Network which is in fact not attached to the interface (but has the same label as the interface) looks like attached in Setup Networks dialog. Change-Id: Ifa83ddfd2ceddc8f2227dcc8cc36c721baf8c7bc Bug-Url: https://bugzilla.redhat.com/1067928 Bug-Url: https://bugzilla.redhat.com/1065270 Bug-Url: https://bugzilla.redhat.com/1068267 Signed-off-by: Alona Kaplan <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/ItemInfoPopup.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanel.java 7 files changed, 77 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/59/25459/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java index 104d798..235a046 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostSetupNetworksModel.java @@ -6,6 +6,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -53,6 +54,7 @@ import org.ovirt.engine.ui.uicompat.EventDefinition; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; +import org.ovirt.engine.ui.uicompat.UIMessages; /** * A Model for the Setup Networks Dialog<BR> @@ -616,6 +618,8 @@ labelModel = new NetworkLabelModel(network.getLabel(), this); labelMap.put(network.getLabel(), labelModel); } + // The network model is candidate to be drawn as part of the label. + // This doesn't yet consider whether it actually exists on the interface. labelModel.getNetworks().add(networkModel); } } @@ -629,6 +633,7 @@ Map<String, List<VdsNetworkInterface>> bondToNic = new HashMap<String, List<VdsNetworkInterface>>(); Map<String, Set<LogicalNetworkModel>> nicToNetwork = new HashMap<String, Set<LogicalNetworkModel>>(); Map<String, List<NetworkLabelModel>> nicToLabels = new HashMap<String, List<NetworkLabelModel>>(); + List<LogicalNetworkModel> errorLabelNetworks = new ArrayList<LogicalNetworkModel>(); labelToIface = new HashMap<String, String>(); // map all nics @@ -716,9 +721,16 @@ NetworkLabelModel labelModel = labelMap.get(label); if (labelModel != null) { // attach label networks to nic - for (LogicalNetworkModel networkModel : labelModel.getNetworks()) { - nicToNetwork.get(ifName).add(networkModel); - networkModel.attachViaLabel(); + for (Iterator<LogicalNetworkModel> iter = labelModel.getNetworks().iterator(); iter.hasNext();) { + LogicalNetworkModel networkModel = iter.next(); + + if (nicToNetwork.get(ifName).contains(networkModel)) { + networkModel.attachViaLabel(); + } else { + // The network has the same label as the nic but not attached to the nic. + iter.remove(); + errorLabelNetworks.add(networkModel); + } } // attach label itself to nic @@ -770,9 +782,27 @@ nicModels.put(nicName, nicModel); } + initLabeledNetworksErrorMessages(errorLabelNetworks, nicModels); setNics(nicModels); } + private void initLabeledNetworksErrorMessages(List<LogicalNetworkModel> errorLabelNetworks, Map<String, NetworkInterfaceModel> nicModels){ + for (LogicalNetworkModel networkModel : errorLabelNetworks){ + NetworkInterfaceModel desiredNic = nicModels.get(labelToIface.get(networkModel.getEntity().getLabel())); + NetworkOperation operation = NetworkOperationFactory.operationFor(networkModel, desiredNic); + UIMessages messages = ConstantsManager.getInstance().getMessages(); + // Should be attached but can't due to conflict + if (operation.isNullOperation()) { + networkModel.setErrorMessage(messages.networkLabelConflict(desiredNic.getName(), + networkModel.getEntity().getLabel()) + + " " + operation.getMessage(networkModel, desiredNic)); //$NON-NLS-1$ + } else { + networkModel.setErrorMessage(messages.labeledNetworkNotAttached(desiredNic.getName(), + networkModel.getEntity().getLabel())); + } + } + } + private void queryLabels() { AsyncDataProvider.getNetworkLabelsByDataCenterId(getEntity().getStoragePoolId(), new AsyncQuery(new INewAsyncCallback() { @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java index 01b8e75..ff2785d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/network/LogicalNetworkModel.java @@ -20,6 +20,7 @@ private boolean selected; private boolean management; private boolean attachedViaLabel; + private String errorMessage; private NetworkInterfaceModel attachedToNic; private NetworkInterfaceModel vlanNic; @@ -213,6 +214,14 @@ attachedViaLabel = true; } + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + public boolean isManagement() { return management; } diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java index d6e7aaa..69d9031 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java @@ -349,4 +349,10 @@ @DefaultMessage("Active (Score: {0})") String haActive(int score); + + @DefaultMessage("Network couldn''t be assigned to ''{0}'' via label ''{1}''.") + String networkLabelConflict(String nicName, String labelName); + + @DefaultMessage("Network should be assigned to ''{0}'' via label ''{1}''. However, for some reason it isn''t.") + String labeledNetworkNotAttached(String nicName, String labelName); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java index bfcfea7..677d8e1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationTemplates.java @@ -115,6 +115,10 @@ + "<span style='position: relative; margin-left: 3px; margin-right: 3px; white-space: nowrap; height: 14px; line-height: 14px;'>{1}</span></span>") SafeHtml imageTextSetupNetwork(SafeHtml image, String text); + @Template("<span><span style='position: relative; display: inline-block; vertical-align: top; height: 14px; line-height: 14px;'>{0}</span>" + + "<span style='position: relative; margin-left: 3px; margin-right: 3px; white-space: normal; height: 14px; line-height: 14px;'>{1}</span></span>") + SafeHtml imageTextSetupNetwork(SafeHtml image, SafeHtml text); + @Template("<div style='font-weight:bold; border-bottom-style:solid; border-bottom-width:1px; border-top-style:solid; border-top-width:1px; width:100%;'>{0}</div> ") SafeHtml titleSetupNetworkTooltip(String title); @@ -159,4 +163,7 @@ @Template("<div style='width:90%; display:inline-block; vertical-align: top;'>{0}</div>") SafeHtml radioButtonLabel(String text); + + @Template("<div style='max-width: 250px; display:inline-block;'>{0}</div>") + SafeHtml maxWidthNteworkItemPopup(String text); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java index ce98957..0d1e54f 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/HostSetupNetworksPopupView.java @@ -182,7 +182,7 @@ for (LogicalNetworkModel network : allNetworks) { if (network.getEntity().isExternal()) { dynamicNetworkPanels.add(new ExternalNetworkPanel(network, style)); - } else if (!network.isAttached() && !network.isAttachedViaLabel()) { + } else if (!network.isAttached()) { staticNetworkPanels.add(new InternalNetworkPanel(network, style)); } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/ItemInfoPopup.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/ItemInfoPopup.java index 112383f..86c8ebb 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/ItemInfoPopup.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/ItemInfoPopup.java @@ -9,6 +9,7 @@ import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkInterfaceModel; import org.ovirt.engine.ui.uicommonweb.models.hosts.network.NetworkItemModel; import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationMessages; import org.ovirt.engine.ui.webadmin.ApplicationResources; import org.ovirt.engine.ui.webadmin.ApplicationTemplates; import org.ovirt.engine.ui.webadmin.gin.ClientGinjectorProvider; @@ -25,7 +26,8 @@ private static final EnumRenderer<NetworkBootProtocol> RENDERER = new EnumRenderer<NetworkBootProtocol>(); private final ApplicationConstants constants = ClientGinjectorProvider.getApplicationConstants(); private final ApplicationTemplates templates = ClientGinjectorProvider.getApplicationTemplates(); - final ApplicationResources resources = ClientGinjectorProvider.getApplicationResources(); + private final ApplicationResources resources = ClientGinjectorProvider.getApplicationResources(); + private final ApplicationMessages messages = ClientGinjectorProvider.getApplicationMessages(); SafeHtml mgmtNetworkImage = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.mgmtNetwork()) .getHTML()); SafeHtml vmImage = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.networkVm()).getHTML()); @@ -38,6 +40,8 @@ SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.questionMarkImage()).getHTML()); SafeHtml notInSyncImage = SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.networkNotSyncImage()).getHTML()); + SafeHtml alertImage = + SafeHtmlUtils.fromTrustedString(AbstractImagePrototype.create(resources.alertImage()).getHTML()); public ItemInfoPopup() { super(true); @@ -78,6 +82,9 @@ addRow(SafeHtmlUtils.fromString(constants.unmanagedNetworkDescriptionItemInfo())); } else { + if (networkModel.getErrorMessage() != null) { + addRow(templates.imageTextSetupNetwork(alertImage, templates.maxWidthNteworkItemPopup(networkModel.getErrorMessage()))); + } // Description if (entity.getDescription() != null && !entity.getDescription().trim().equals("")) { //$NON-NLS-1$ addRow(SafeHtmlUtils.fromString(entity.getDescription())); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanel.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanel.java index de7efdf..2d52c70 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanel.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/host/panels/NetworkPanel.java @@ -7,8 +7,10 @@ import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.Grid; +import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Label; +import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.HTMLTable.ColumnFormatter; @@ -37,6 +39,7 @@ Image monitorImage; Image migrationImage; Image notSyncImage; + Image alertImage; if (!network.isManaged()) { monitorImage = null; @@ -44,6 +47,7 @@ vmImage = null; migrationImage = null; notSyncImage = null; + alertImage = null; } else { monitorImage = network.getEntity().getCluster().isDisplay() ? new Image(resources.networkMonitor()) : null; @@ -52,6 +56,7 @@ migrationImage = network.getEntity().getCluster().isMigration() ? new Image(resources.migrationNetwork()) : null; notSyncImage = !network.isInSync() ? new Image(resources.networkNotSyncImage()) : null; + alertImage = network.getErrorMessage() != null ? new Image(resources.alertImage()) : null; if (network.isManagement()) { mgmtNetworkImage.setStylePrimaryName(style.networkImageBorder()); @@ -75,7 +80,7 @@ } Grid rowPanel = new Grid(1, 9); - rowPanel.setCellSpacing(3); + rowPanel.setCellSpacing(0); rowPanel.setWidth("100%"); //$NON-NLS-1$ rowPanel.setHeight("100%"); //$NON-NLS-1$ @@ -86,9 +91,15 @@ rowPanel.setWidget(0, 0, dragImage); + Panel statusPanel = new HorizontalPanel(); + rowPanel.setWidget(0, 1, statusPanel); + if (alertImage != null) { + statusPanel.add(alertImage); + } + ImageResource statusImage = getStatusImage(); if (statusImage != null) { - rowPanel.setWidget(0, 1, new Image(statusImage)); + statusPanel.add(new Image(statusImage)); } Label titleLabel = new Label(getItemTitle()); rowPanel.setWidget(0, 2, titleLabel); -- To view, visit http://gerrit.ovirt.org/25459 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifa83ddfd2ceddc8f2227dcc8cc36c721baf8c7bc Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Alona Kaplan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
