Skip to content

Commit 6e05eaa

Browse files
author
Tim Middleton
authored
Add new federation panels (#343)
* Add new federation panels * Update staging and snapshot repositories. * Correct url link * Update repository
1 parent a6852d6 commit 6e05eaa

File tree

3 files changed

+148
-46
lines changed

3 files changed

+148
-46
lines changed

java/pom.xml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@
456456
<repository>
457457
<id>ossrh-staging</id>
458458
<name>OSS Sonatype Staging</name>
459-
<url>https://oss.sonatype.org/content/groups/staging/</url>
459+
<url>https://central.sonatype.com/</url>
460460
<snapshots>
461461
<enabled>false</enabled>
462462
</snapshots>
@@ -467,6 +467,17 @@
467467

468468
<repository>
469469
<id>snapshots-repo</id>
470+
<url>https://central.sonatype.com/repository/maven-snapshots</url>
471+
<releases>
472+
<enabled>false</enabled>
473+
</releases>
474+
<snapshots>
475+
<enabled>true</enabled>
476+
</snapshots>
477+
</repository>
478+
479+
<repository>
480+
<id>snapshots-repo-old</id>
470481
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
471482
<releases>
472483
<enabled>false</enabled>

pkg/cmd/federation.go

Lines changed: 64 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -314,12 +314,7 @@ service, type and participant. Specify -T to set type outgoing or incoming and -
314314
printWatchHeader(cmd)
315315
sb.WriteString(FormatCurrentCluster(connection))
316316

317-
sb.WriteString("\nFEDERATION DETAILS\n")
318-
sb.WriteString("------------------\n")
319-
320-
sb.WriteString(fmt.Sprintf("Service: %s\n", service))
321-
sb.WriteString(fmt.Sprintf("Type: %s\n", describeFederationType))
322-
sb.WriteString(fmt.Sprintf("Participant: %s\n\n", participant))
317+
sb.WriteString(getDescribeFederationHeader(service, describeFederationType, participant))
323318

324319
if verboseOutput {
325320
for _, v := range results {
@@ -355,6 +350,21 @@ service, type and participant. Specify -T to set type outgoing or incoming and -
355350
},
356351
}
357352

353+
func getDescribeFederationHeader(serviceName, federationType, participantName string) string {
354+
var sb strings.Builder
355+
356+
if !monitorCluster {
357+
sb.WriteString("\nFEDERATION DETAILS\n")
358+
sb.WriteString("------------------\n")
359+
sb.WriteString(fmt.Sprintf("Service: %s\n", serviceName))
360+
}
361+
362+
sb.WriteString(fmt.Sprintf("Type: %s\n", federationType))
363+
sb.WriteString(fmt.Sprintf("Participant: %s\n\n", participantName))
364+
365+
return sb.String()
366+
}
367+
358368
func decodeFederationData(results [][]byte) ([]config.FederationDescription, error) {
359369
var federationData = make([]config.FederationDescription, 0)
360370
for _, v := range results {
@@ -438,47 +448,15 @@ func getFederationConnectionDetails(cmd *cobra.Command, service, federationType
438448
return err
439449
}
440450
} else {
441-
var sb strings.Builder
442-
443451
printWatchHeader(cmd)
444-
sb.WriteString(FormatCurrentCluster(connection))
445-
446-
textDirection := "OUTGOING"
447-
if describeFederationType == origins {
448-
textDirection = "INCOMING"
449-
}
450-
451-
sb.WriteString("\n" + textDirection + " FEDERATION CONNECTIONS\n")
452-
sb.WriteString("------------------------------\n")
453-
454-
sb.WriteString(fmt.Sprintf("Service: %s\n", service))
455-
sb.WriteString(fmt.Sprintf("Type: %s\n", describeFederationType))
456-
sb.WriteString(fmt.Sprintf("Participant: %s\n", participant))
457-
sb.WriteString("** Showing destination member details\n\n")
452+
cmd.Println(FormatCurrentCluster(connection))
458453

459-
// encode the mapMembers
460-
federationData, err := decodeFederationData(results)
461-
if err != nil {
462-
return err
454+
output, err2 := getFederationConnectionData(results, service, describeFederationType, participant)
455+
if err2 != nil {
456+
return err2
463457
}
464458

465-
mapAllIncoming := make([]string, 0)
466-
for _, v := range federationData {
467-
for _, v2 := range v.MapMembers {
468-
mapAllIncoming = append(mapAllIncoming, v2)
469-
}
470-
if v.Member != "" && v.Member != "N/A" {
471-
mapAllIncoming = append(mapAllIncoming, v.Member)
472-
}
473-
}
474-
incomingList, err1 := decodeDepartedMembers(mapAllIncoming)
475-
if err1 != nil {
476-
return err1
477-
}
478-
479-
sb.WriteString(FormatDepartedMembers(incomingList))
480-
481-
cmd.Println(sb.String())
459+
cmd.Println(output)
482460
}
483461

484462
// check to see if we should exit if we are not watching
@@ -493,6 +471,49 @@ func getFederationConnectionDetails(cmd *cobra.Command, service, federationType
493471
return nil
494472
}
495473

474+
func getFederationConnectionData(results [][]byte, service, federationType, participantName string) (string, error) {
475+
var sb strings.Builder
476+
477+
textDirection := "OUTGOING"
478+
if federationType == origins {
479+
textDirection = "INCOMING"
480+
}
481+
482+
if !monitorCluster {
483+
sb.WriteString("\n" + textDirection + " FEDERATION CONNECTIONS\n")
484+
sb.WriteString("-------------------------------\n")
485+
sb.WriteString(fmt.Sprintf("Service: %s\n", service))
486+
}
487+
488+
sb.WriteString(fmt.Sprintf("Type: %s\n", federationType))
489+
sb.WriteString(fmt.Sprintf("Participant: %s\n", participantName))
490+
sb.WriteString("** Showing destination member details\n\n")
491+
492+
// encode the mapMembers
493+
federationData, err := decodeFederationData(results)
494+
if err != nil {
495+
return "", err
496+
}
497+
498+
mapAllIncoming := make([]string, 0)
499+
for _, v := range federationData {
500+
for _, v2 := range v.MapMembers {
501+
mapAllIncoming = append(mapAllIncoming, v2)
502+
}
503+
if v.Member != "" && v.Member != "N/A" {
504+
mapAllIncoming = append(mapAllIncoming, v.Member)
505+
}
506+
}
507+
incomingList, err1 := decodeDepartedMembers(mapAllIncoming)
508+
if err1 != nil {
509+
return "", err1
510+
}
511+
512+
sb.WriteString(FormatDepartedMembers(incomingList))
513+
514+
return sb.String(), nil
515+
}
516+
496517
func encodeFinalData(results [][]byte) []byte {
497518
numResults := len(results)
498519

pkg/cmd/monitor_cluster.go

Lines changed: 72 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ var (
4949
"default-members": "members:machines,departed-members:network-stats",
5050
}
5151
errSelectService = errors.New("you must provide a service name via -S option")
52+
errSelectParticipant = errors.New("you must provide a participant name via -p option")
5253
errSelectCache = errors.New("you must provide a cache using the -C option")
5354
errSelectTopic = errors.New("you must provide a topic using the -T option")
5455
errSelectSubscriber = errors.New("you must provide a subscriber using the -B option")
@@ -183,6 +184,10 @@ var validPanels = []panelImpl{
183184
createContentPanel(4, "federation-all", "Federation All", "show all federation details", federationAllContent, federationPanelData),
184185
createContentPanel(3, "federation-dest", "Federation Destinations", "show federation destinations", federationDestinationsContent, federationPanelData),
185186
createContentPanel(3, "federation-origins", "Federation Origins", "show federation origins", federationOriginsContent, federationPanelData),
187+
createContentPanel(7, "federation-con-outgoing", "Federation Connections Outgoing (%SERVICE)", "show federation connections outgoing", federationOutgoing),
188+
createContentPanel(7, "federation-con-incoming", "Federation Connections Incoming (%SERVICE)", "show federation connections incoming", federationIncoming),
189+
createContentPanel(7, "federation-outgoing", "Federation Details Outgoing (%SERVICE)", "show federation details outgoing", federationDetailsOutgoing),
190+
createContentPanel(7, "federation-incoming", "Federation Details Incoming (%SERVICE)", "show federation details incoming", federationDetailsIncoming),
186191
createContentPanel(7, "http-servers", "HTTP Servers", "show HTTP servers", httpServersContent, proxiesPanelData),
187192
createContentPanel(7, "http-sessions", "HTTP Sessions", "show HTTP sessions", httpSessionsContent, httpSessionsPanelData),
188193
createContentPanel(7, "machines", "Machines", "show machines", machinesContent, memberPanelData, storagePanelData),
@@ -1049,6 +1054,70 @@ var federationAllContent = func(_ fetcher.Fetcher, clusterSummary clusterSummary
10491054
return noContentArray, nil
10501055
}
10511056

1057+
var federationOutgoing = func(dataFetcher fetcher.Fetcher, _ clusterSummaryInfo) ([]string, error) {
1058+
return federationOutgoingAndIncoming(dataFetcher, outgoing)
1059+
}
1060+
1061+
var federationIncoming = func(dataFetcher fetcher.Fetcher, _ clusterSummaryInfo) ([]string, error) {
1062+
return federationOutgoingAndIncoming(dataFetcher, incoming)
1063+
}
1064+
1065+
func federationOutgoingAndIncoming(dataFetcher fetcher.Fetcher, federationDirection string) ([]string, error) {
1066+
if serviceName == "" {
1067+
return emptyStringArray, errSelectService
1068+
}
1069+
if participant == all {
1070+
return emptyStringArray, errSelectParticipant
1071+
}
1072+
1073+
results, err := retrieveFederationDetails(dataFetcher, serviceName, federationDirection)
1074+
if err != nil {
1075+
return noContentArray, nil
1076+
}
1077+
1078+
output, err2 := getFederationConnectionData(results, serviceName, federationDirection, participant)
1079+
if err2 != nil {
1080+
return noContentArray, nil
1081+
}
1082+
1083+
return strings.Split(output, "\n"), nil
1084+
}
1085+
1086+
func federationDetailsOutgoingAndIncoming(dataFetcher fetcher.Fetcher, federationDirection string) ([]string, error) {
1087+
if serviceName == "" {
1088+
return emptyStringArray, errSelectService
1089+
}
1090+
if participant == all {
1091+
return emptyStringArray, errSelectParticipant
1092+
}
1093+
1094+
results, err := retrieveFederationDetails(dataFetcher, serviceName, federationDirection)
1095+
if err != nil {
1096+
return noContentArray, nil
1097+
}
1098+
1099+
var sb strings.Builder
1100+
1101+
sb.WriteString(getDescribeFederationHeader(serviceName, federationDirection, participant))
1102+
1103+
federationData, err := decodeFederationData(results)
1104+
if err != nil {
1105+
return noContentArray, nil
1106+
}
1107+
1108+
sb.WriteString(FormatFederationDetails(federationData, describeFederationType))
1109+
1110+
return strings.Split(sb.String(), "\n"), nil
1111+
}
1112+
1113+
var federationDetailsOutgoing = func(dataFetcher fetcher.Fetcher, _ clusterSummaryInfo) ([]string, error) {
1114+
return federationDetailsOutgoingAndIncoming(dataFetcher, outgoing)
1115+
}
1116+
1117+
var federationDetailsIncoming = func(dataFetcher fetcher.Fetcher, _ clusterSummaryInfo) ([]string, error) {
1118+
return federationDetailsOutgoingAndIncoming(dataFetcher, incoming)
1119+
}
1120+
10521121
var federationDestinationsContent = func(_ fetcher.Fetcher, clusterSummary clusterSummaryInfo) ([]string, error) {
10531122
if len(clusterSummary.finalSummariesDestinations) > 0 {
10541123
return strings.Split(FormatFederationSummary(clusterSummary.finalSummariesDestinations, destinations), "\n"), nil
@@ -1669,12 +1738,12 @@ func getValidPanelTypes() string {
16691738
var sb strings.Builder
16701739
sb.WriteString("Default panels\n--------------\n")
16711740
for k, v := range defaultMap {
1672-
sb.WriteString(fmt.Sprintf("%-22s: %s\n", k, v))
1741+
sb.WriteString(fmt.Sprintf("%-25s: %s\n", k, v))
16731742
}
16741743

16751744
sb.WriteString("\nIndividual panels\n-----------------\n")
16761745
for _, p := range validPanels {
1677-
sb.WriteString(fmt.Sprintf("%-22s: %s\n", p.GetPanelName(), p.GetDescription()))
1746+
sb.WriteString(fmt.Sprintf("%-25s: %s\n", p.GetPanelName(), p.GetDescription()))
16781747
}
16791748

16801749
return sb.String()
@@ -1705,6 +1774,7 @@ func init() {
17051774
monitorClusterCmd.Flags().BoolVarP(&ignoreRESTErrors, "ignore-errors", "I", false, "ignore errors after initial refresh")
17061775
monitorClusterCmd.Flags().BoolVarP(&disablePadding, "disable-padding", "D", false, "disable padding of panels by default")
17071776
monitorClusterCmd.Flags().StringVarP(&serviceName, serviceNameOption, "S", "", serviceNameDescription)
1777+
monitorClusterCmd.Flags().StringVarP(&participant, "participant", "p", all, participantMessage)
17081778
monitorClusterCmd.Flags().StringVarP(&selectedCache, "cache-name", "C", "", "cache name")
17091779
monitorClusterCmd.Flags().StringVarP(&selectedTopic, "topic-name", "T", "", "topic name")
17101780
monitorClusterCmd.Flags().StringVarP(&colorStyleParam, "style", "", "", "color style")

0 commit comments

Comments
 (0)