ui.clusters.cluster.ftl Maven / Gradle / Ivy
<#-- @ftlvariable name="lastCommit" type="java.lang.String" -->
<#-- @ftlvariable name="appUrl" type="com.infobip.kafkistry.webapp.url.AppUrl" -->
<#-- @ftlvariable name="clusterStatus" type="com.infobip.kafkistry.service.cluster.ClusterStatus" -->
<#-- @ftlvariable name="pendingClusterRequests" type="java.util.List" -->
<#-- @ftlvariable name="gitStorageEnabled" type="java.lang.Boolean" -->
<#-- @ftlvariable name="brokerConfigDoc" type="java.util.Map" -->
<#-- @ftlvariable name="autopilotEnabled" type="java.lang.Boolean" -->
<#-- @ftlvariable name="autopilotActions" type="java.util.List" -->
<#assign clusterModel = clusterStatus.cluster>
<#assign clusterIdentifier = clusterModel.identifier>
<#include "../commonResources.ftl"/>
Kafkistry: Cluster
<#include "../commonMenu.ftl">
<#import "../common/util.ftl" as util>
<#import "../common/infoIcon.ftl" as info>
Cluster: ${clusterIdentifier}
Cluster identifier
${clusterIdentifier}
Tags
<#if clusterModel.tags?size == 0>
(no tags)
<#else>
<#list clusterModel.tags as tag>
${tag}
#list>
#if>
Connection protocol
<#if clusterModel.sslEnabled && clusterModel.saslEnabled>SASL_SSL (authentication + encrypted connection)
<#elseif clusterModel.sslEnabled && !clusterModel.saslEnabled>SSL (no authentication + encrypted connection)
<#elseif !clusterModel.sslEnabled && clusterModel.saslEnabled>SASL_PLAINTEXT (authentication + plain connection)
<#else>PLAINTEXT (no authentication + plain connection)#if>
Properties profiles
<#if clusterModel.profiles?size == 0>
----
#if>
<#list clusterModel.profiles as profile>
${profile}
#list>
Cluster state
<@util.namedTypeStatusAlert type=clusterStatus.clusterState/>
Last refresh
<#if clusterStatus.clusterInfo??>
<#assign clusterInfo = clusterStatus.clusterInfo>
Cluster id
${clusterInfo.clusterId}
Consensus type
<#assign clusterConsensusType = clusterInfo.kraftEnabled?then("KRaft", "Zookeper")>
${clusterConsensusType}
<#if clusterInfo.kraftEnabled>
Leader
ID:${clusterInfo.quorumInfo.leaderId?c}
Epoch:${clusterInfo.quorumInfo.leaderEpoch?c}
High-Watermark:${clusterInfo.quorumInfo.highWatermark?c}
<#macro quorumReplicas replicas>
<#-- @ftlvariable name="replicas" type="java.util.List" -->
Replica ID
Log end offset
Last fetch
Last caught up
<#list replicas as replica>
${replica.replicaId?c}
${replica.logEndOffset?c}
<#if replica.lastFetchTimestamp??>
<#else>
n/a
#if>
<#if replica.lastCaughtUpTimestamp??>
<#else>
n/a
#if>
#list>
#macro>
Voters
<#if clusterInfo.quorumInfo.voters?size == 0>
(none)
<#else>
<@quorumReplicas replicas=clusterInfo.quorumInfo.voters/>
#if>
Observers
<#if clusterInfo.quorumInfo.observers?size == 0>
(none)
<#else>
<@quorumReplicas replicas=clusterInfo.quorumInfo.observers/>
#if>
<#else>
Controller node id
${clusterInfo.controllerId}
#if>
Nodes/Broker ids
<#include "clusterNodesList.ftl">
Connection
${clusterInfo.connectionString}
#if>
<#if autopilotEnabled>
Autopilot
<#assign actionsSearchTerm = clusterIdentifier>
<#include "../autopilot/relatedActions.ftl">
#if>
<#if gitStorageEnabled>
Pending changes
<#assign pendingRequests = pendingClusterRequests>
<#include "../common/pendingChanges.ftl" >
#if>
Cluster issues
<#assign statusId = "clusterIssues">
<#include "../common/serverOpStatus.ftl">
<#assign statusId = "">
▼
△
Status per topic on this cluster
<#assign statusId = "clusterTopics">
<#include "../common/serverOpStatus.ftl">
<#assign statusId = "">
▼
△
Status per ACLs on this cluster
<#assign statusId = "clusterAcls">
<#include "../common/serverOpStatus.ftl">
<#assign statusId = "">
▼
△
Status per entity quotas on this cluster
<#assign statusId = "clusterQuotas">
<#include "../common/serverOpStatus.ftl">
<#assign statusId = "">
▼
△
Status per consumer group on this cluster
<#assign statusId = "clusterConsumerGroups">
<#include "../common/serverOpStatus.ftl">
<#assign statusId = "">
▼
△
Cluster metadata info / broker config properties
<#if clusterStatus.clusterInfo??>
<#assign clusterInfo = clusterStatus.clusterInfo>
Select node config
<#list clusterInfo.nodeIds as nodeId>
<#assign active = (nodeId == clusterInfo.controllerId)?then("active", "")>
<#if clusterInfo.perBrokerConfig?api.containsKey(nodeId)>
<#assign config = clusterInfo.perBrokerConfig?api.get(nodeId)>
<#include "../common/existingConfig.ftl">
<#else>
---
#if>
#list>
<#else>
(nothing to show because cluster state is ${clusterStatus.clusterState})
#if>
<#include "../common/pageBottom.ftl">