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