You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jb...@apache.org on 2024/12/09 20:53:12 UTC

(activemq-artemis-console) 04/04: ARTEMIS-5204 - Backups not showing in console

This is an automated email from the ASF dual-hosted git repository.

jbertram pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis-console.git

commit c377c4624be42049810823ee17d15413eac1e57d
Author: Andy Taylor <an...@gmail.com>
AuthorDate: Mon Dec 9 17:19:54 2024 +0000

    ARTEMIS-5204 - Backups not showing in console
---
 .../artemis-extension/public/css/activemq.css      |  4 +
 .../artemis-extension/artemis/artemis-service.ts   |  3 +
 .../artemis/brokers/BrokerDiagram.tsx              | 89 +++++++++++++++++++++-
 3 files changed, 95 insertions(+), 1 deletion(-)

diff --git a/artemis-console-extension/artemis-extension/public/css/activemq.css b/artemis-console-extension/artemis-extension/public/css/activemq.css
index 211ea38..979fdea 100644
--- a/artemis-console-extension/artemis-extension/public/css/activemq.css
+++ b/artemis-console-extension/artemis-extension/public/css/activemq.css
@@ -57,6 +57,10 @@ svg.pf-v5-svg {
   fill: #c12766;
 }
 
+.pf-topology__node.artemisBackupBroker.pf-m-info .pf-topology__node__background {
+  stroke: #82171b;
+  fill: #cf242a;
+}
 
 .pf-topology__node.artemisAddress.pf-m-info .pf-topology__node__background {
   stroke:  #2b326e;
diff --git a/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/artemis-service.ts b/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/artemis-service.ts
index 52fd901..85e4ed7 100644
--- a/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/artemis-service.ts
+++ b/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/artemis-service.ts
@@ -206,6 +206,9 @@ class ArtemisService {
         return new Promise<BrokerTopology>(async (resolve, reject) => {
             try {
                 var brokerInfo = await this.getBrokerInfo();
+                var brokerObjectName = await this.brokerObjectName;
+                const topology = await jolokiaService.execute(brokerObjectName, LIST_NETWORK_TOPOLOGY_SIG) as string;
+                brokerInfo.networkTopology =  new BrokerNetworkTopology(JSON.parse(topology));
                 var brokerTopology: BrokerTopology = {
                     broker: brokerInfo,
                     addresses: []
diff --git a/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/brokers/BrokerDiagram.tsx b/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/brokers/BrokerDiagram.tsx
index 2823f0f..873dc2a 100644
--- a/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/brokers/BrokerDiagram.tsx
+++ b/artemis-console-extension/artemis-extension/src/artemis-extension/artemis/brokers/BrokerDiagram.tsx
@@ -63,6 +63,7 @@ import { Attributes } from '@hawtio/react';
 import { ToolbarItem, Select, SelectOption, Button, MenuToggleElement, MenuToggle, SelectList } from '@patternfly/react-core';
 import { createAddressObjectName, createQueueObjectName } from '../util/jmx';
 import { ArtemisContext } from '../context';
+import { log } from '../globals';
 
 
 const BadgeColors = [
@@ -143,7 +144,35 @@ const BrokerCustomNode: React.FC<CustomNodeProps & WithSelectionProps & WithDrag
       {...rest}
     >
       <g transform={`translate(25, 25)`}>
-        <Icon style={{ color: '#393F44' }} width={25} height={25}></Icon>
+        <Icon style={{ color: '#000000', fill: '#000000' }} width={25} height={25}></Icon>
+      </g>
+    </DefaultNode>
+  );
+};
+
+const BrokerBackupCustomNode: React.FC<CustomNodeProps & WithSelectionProps & WithDragNodeProps & WithDndDropProps> = ({ element, onSelect, selected, ...rest }) => {
+  const data = element.getData();
+  const selectNode = data.selectNode;
+  const Icon = ClusterIcon;
+  const badgeColors = BadgeColors.find(badgeColor => badgeColor.name === data.badge);
+  const { viewOptions } = element.getController().getState<ControllerState>();
+
+  return (
+    <DefaultNode 
+      element={element}
+      showStatusDecorator
+      badge={data.badge}
+      badgeColor={badgeColors?.badgeColor}
+      badgeTextColor={badgeColors?.badgeTextColor}
+      badgeBorderColor={badgeColors?.badgeBorderColor}
+      showLabel={viewOptions.showLabels}
+      className="artemisBackupBroker"
+      onSelect={() => selectNode(data)}
+      selected={selected}
+      {...rest}
+    >
+      <g transform={`translate(25, 25)`}>
+        <Icon style={{ color: '#000000', fill: '#000000' }} width={25} height={25}></Icon>
       </g>
     </DefaultNode>
   );
@@ -185,6 +214,9 @@ const customComponentFactory: ComponentFactory = (kind: ModelKind, type: string)
             case 'broker':
               return withDndDrop(nodeDropTargetSpec([CONNECTOR_TARGET_DROP]))(
                 withDragNode(nodeDragSourceSpec('node', true, true))(BrokerCustomNode));
+            case 'backupBroker':
+              return withDndDrop(nodeDropTargetSpec([CONNECTOR_TARGET_DROP]))(
+                withDragNode(nodeDragSourceSpec('node', true, true))(BrokerBackupCustomNode));
             case 'resource':
               return withDndDrop(nodeDropTargetSpec([CONNECTOR_TARGET_DROP]))(
                 withDragNode(nodeDragSourceSpec('node', true, true))(ResourceNode));
@@ -408,6 +440,61 @@ export const BrokerDiagram: React.FunctionComponent = () => {
             };
             newBrokerEdges.push(brokerEdge);
           }
+          if(broker.backup) {
+            log.debug("adding backup to this live")
+            var backupBrokerNode: NodeModel = {
+              id: broker.nodeID + "backup",
+              type: 'backupBroker',
+              label: broker.backup,
+              width: BROKER_NODE_DIAMETER,
+              height: BROKER_NODE_DIAMETER,
+              shape: NodeShape.ellipse,
+              status: NodeStatus.info,
+              data: {
+                badge: 'Broker',
+                type: "backupBroker",
+                selectNode: selectNode
+              }
+            }
+            newBrokerNodes.push(backupBrokerNode);
+            if (viewOptions.showConnectors) {
+              var brokerEdge: EdgeModel = {
+                id: 'broker-edge-' + brokerTopology.broker.nodeID + "backup" + '-broker-node-' + broker.nodeID,
+                type: 'edge',
+                source: broker.nodeID,
+                target: broker.nodeID + "backup",
+                edgeStyle: EdgeStyle.default
+              };
+              newBrokerEdges.push(brokerEdge);
+            }
+          }
+        } else if (broker.backup) {
+          log.debug("adding backup to this live")
+          var backupBrokerNode: NodeModel = {
+            id: broker.nodeID + "backup",
+            type: 'backupBroker',
+            label: broker.backup,
+            width: BROKER_NODE_DIAMETER,
+            height: BROKER_NODE_DIAMETER,
+            shape: NodeShape.ellipse,
+            status: NodeStatus.info,
+            data: {
+              badge: 'Broker',
+              type: "backupBroker",
+              selectNode: selectNode
+            }
+          }
+          newBrokerNodes.push(backupBrokerNode);
+          if (viewOptions.showConnectors) {
+            var brokerEdge: EdgeModel = {
+              id: 'broker-edge-' + brokerTopology.broker.nodeID + "backup" + '-broker-node-' + broker.nodeID,
+              type: 'edge',
+              source: brokerTopology.broker.nodeID,
+              target: broker.nodeID + "backup",
+              edgeStyle: EdgeStyle.default
+            };
+            newBrokerEdges.push(brokerEdge);
+          }
         }
       }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@activemq.apache.org
For additional commands, e-mail: commits-help@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact