Skip to content

Commit

Permalink
Merge pull request #1461 from rancher/bug-1438
Browse files Browse the repository at this point in the history
Return opensearch status immediately
  • Loading branch information
dbason committed May 31, 2023
2 parents 8db2843 + ac44bb2 commit c4c88fb
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 12 deletions.
20 changes: 13 additions & 7 deletions plugins/logging/pkg/gateway/admin_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package gateway
import (
"context"
"errors"
"fmt"
"regexp"
"strings"
"time"
Expand Down Expand Up @@ -35,20 +36,20 @@ const (
ClusterStatusError
)

func ClusterStatusDescription(s ClusterStatus) string {
func ClusterStatusDescription(s ClusterStatus, extraInfo ...string) string {
switch s {
case ClusterStatusPending:
return "Opensearch cluster is initializing"
return fmt.Sprintf("Opensearch cluster is initializing. %s", strings.Join(extraInfo, ", "))
case ClusterStatusGreen:
return "Opensearch cluster is green"
return fmt.Sprintf("Opensearch cluster is green. %s", strings.Join(extraInfo, ", "))
case ClusterStatusYellow:
return "Opensearch cluster is yellow"
return fmt.Sprintf("Opensearch cluster is yellow. %s", strings.Join(extraInfo, ", "))
case ClusterStatusRed:
return "Opensearch cluster is red"
return fmt.Sprintf("Opensearch cluster is red. %s", strings.Join(extraInfo, ", "))
case ClusterStatusError:
return "Error fetching status from Opensearch cluster"
return fmt.Sprintf("Error fetching status from cluster. %s", strings.Join(extraInfo, ", "))
default:
return "unknown status"
return fmt.Sprintf("Unknown status. %s", strings.Join(extraInfo, ", "))
}
}

Expand Down Expand Up @@ -186,6 +187,11 @@ func (m *LoggingManagerV2) GetOpensearchStatus(ctx context.Context, _ *emptypb.E
status = ClusterStatusRed
case opensearchdata.ClusterStatusError:
status = ClusterStatusError
case opensearchdata.ClusterStatusNoClient:
return &loggingadmin.StatusResponse{
Status: int32(ClusterStatusPending),
Details: ClusterStatusDescription(ClusterStatusPending, "Waiting for Opensearch client to be initialized"),
}, nil
}

return &loggingadmin.StatusResponse{
Expand Down
1 change: 1 addition & 0 deletions plugins/logging/pkg/opensearchdata/opensearchdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const (
ClusterStatusYellow
ClusterStatusRed
ClusterStatusError
ClusterStatusNoClient
)

type Manager struct {
Expand Down
8 changes: 3 additions & 5 deletions plugins/logging/pkg/opensearchdata/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,16 @@ package opensearchdata

import (
"context"
"time"

"github.com/rancher/opni/pkg/util"
"github.com/tidwall/gjson"
)

func (m *Manager) GetClusterStatus() ClusterStatus {
success := m.WaitForInitWithTimeout(30 * time.Second)
if !success {
m.logger.Error("timed out waiting for opensearch client")
return ClusterStatusError
if !m.IsInitialized() {
return ClusterStatusNoClient
}

m.Lock()
defer m.Unlock()

Expand Down
6 changes: 6 additions & 0 deletions plugins/logging/pkg/util/opensearch.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,3 +86,9 @@ func (c *AsyncOpensearchClient) Lock() {
func (c *AsyncOpensearchClient) Unlock() {
c.rw.RUnlock()
}

func (c *AsyncOpensearchClient) IsInitialized() bool {
c.rw.RLock()
defer c.rw.RUnlock()
return c.initialized
}

0 comments on commit c4c88fb

Please sign in to comment.