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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact


Reply via email to