mattermost-community-enterp.../vendor/github.com/opensearch-project/opensearch-go/v4/opensearchapi/api_cluster-stats.go
Claude ec1f89217a Merge: Complete Mattermost Server with Community Enterprise
Full Mattermost server source with integrated Community Enterprise features.
Includes vendor directory for offline/air-gapped builds.

Structure:
- enterprise-impl/: Enterprise feature implementations
- enterprise-community/: Init files that register implementations
- enterprise/: Bridge imports (community_imports.go)
- vendor/: All dependencies for offline builds

Build (online):
  go build ./cmd/mattermost

Build (offline/air-gapped):
  go build -mod=vendor ./cmd/mattermost

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 23:59:07 +09:00

277 lines
9.8 KiB
Go

// SPDX-License-Identifier: Apache-2.0
//
// The OpenSearch Contributors require contributions made to
// this file be licensed under the Apache-2.0 license or a
// compatible open source license.
package opensearchapi
import (
"encoding/json"
"net/http"
"strings"
"github.com/opensearch-project/opensearch-go/v4"
)
// ClusterStatsReq represents possible options for the /_cluster/stats request
type ClusterStatsReq struct {
NodeFilters []string
Header http.Header
Params ClusterStatsParams
}
// GetRequest returns the *http.Request that gets executed by the client
func (r ClusterStatsReq) GetRequest() (*http.Request, error) {
filters := strings.Join(r.NodeFilters, ",")
var path strings.Builder
path.Grow(22 + len(filters))
path.WriteString("/_cluster/stats")
if len(filters) > 0 {
path.WriteString("/nodes/")
path.WriteString(filters)
}
return opensearch.BuildRequest(
"GET",
path.String(),
nil,
r.Params.get(),
r.Header,
)
}
// ClusterStatsResp represents the returned struct of the ClusterStatsReq response
type ClusterStatsResp struct {
NodesInfo struct {
Total int `json:"total"`
Successful int `json:"successful"`
Failed int `json:"failed"`
Failures []FailuresCause `json:"failures"`
} `json:"_nodes"`
ClusterName string `json:"cluster_name"`
ClusterUUID string `json:"cluster_uuid"`
Timestamp int64 `json:"timestamp"`
Status string `json:"status"`
Indices ClusterStatsIndices `json:"indices"`
Nodes ClusterStatsNodes `json:"nodes"`
response *opensearch.Response
}
// Inspect returns the Inspect type containing the raw *opensearch.Reponse
func (r ClusterStatsResp) Inspect() Inspect {
return Inspect{Response: r.response}
}
// ClusterStatsIndices is a sub type of ClusterStatsResp containing cluster information about indices
type ClusterStatsIndices struct {
Count int `json:"count"`
Shards struct {
Total int `json:"total"`
Primaries int `json:"primaries"`
Replication float64 `json:"replication"`
Index struct {
Shards struct {
Min float64 `json:"min"`
Max float64 `json:"max"`
Avg float64 `json:"avg"`
} `json:"shards"`
Primaries struct {
Min float64 `json:"min"`
Max float64 `json:"max"`
Avg float64 `json:"avg"`
} `json:"primaries"`
Replication struct {
Min float64 `json:"min"`
Max float64 `json:"max"`
Avg float64 `json:"avg"`
} `json:"replication"`
} `json:"index"`
} `json:"shards"`
Docs struct {
Count int64 `json:"count"`
Deleted int `json:"deleted"`
} `json:"docs"`
Store struct {
SizeInBytes int64 `json:"size_in_bytes"`
ReservedInBytes int `json:"reserved_in_bytes"`
} `json:"store"`
Fielddata struct {
MemorySizeInBytes int `json:"memory_size_in_bytes"`
Evictions int `json:"evictions"`
} `json:"fielddata"`
QueryCache struct {
MemorySizeInBytes int `json:"memory_size_in_bytes"`
TotalCount int `json:"total_count"`
HitCount int `json:"hit_count"`
MissCount int `json:"miss_count"`
CacheSize int `json:"cache_size"`
CacheCount int `json:"cache_count"`
Evictions int `json:"evictions"`
} `json:"query_cache"`
Completion struct {
SizeInBytes int `json:"size_in_bytes"`
} `json:"completion"`
Segments struct {
Count int `json:"count"`
MemoryInBytes int `json:"memory_in_bytes"`
TermsMemoryInBytes int `json:"terms_memory_in_bytes"`
StoredFieldsMemoryInBytes int `json:"stored_fields_memory_in_bytes"`
TermVectorsMemoryInBytes int `json:"term_vectors_memory_in_bytes"`
NormsMemoryInBytes int `json:"norms_memory_in_bytes"`
PointsMemoryInBytes int `json:"points_memory_in_bytes"`
DocValuesMemoryInBytes int `json:"doc_values_memory_in_bytes"`
IndexWriterMemoryInBytes int `json:"index_writer_memory_in_bytes"`
VersionMapMemoryInBytes int `json:"version_map_memory_in_bytes"`
FixedBitSetMemoryInBytes int64 `json:"fixed_bit_set_memory_in_bytes"`
MaxUnsafeAutoIDTimestamp int64 `json:"max_unsafe_auto_id_timestamp"`
RemoteStore struct {
Upload struct {
TotalUploadSize struct {
StartedBytes int `json:"started_bytes"`
SucceededBytes int `json:"succeeded_bytes"`
FailedBytes int `json:"failed_bytes"`
} `json:"total_upload_size"`
RefreshSizeLag struct {
TotalBytes int `json:"total_bytes"`
MaxBytes int `json:"max_bytes"`
} `json:"refresh_size_lag"`
MaxRefreshTimeLagInMillis int `json:"max_refresh_time_lag_in_millis"`
TotalTimeSpentInMillis int `json:"total_time_spent_in_millis"`
Pressure struct {
TotalRejections int `json:"total_rejections"`
} `json:"pressure"`
} `json:"upload"`
Download struct {
TotalDownloadSize struct {
StartedBytes int `json:"started_bytes"`
SucceededBytes int `json:"succeeded_bytes"`
FailedBytes int `json:"failed_bytes"`
} `json:"total_download_size"`
TotalTimeSpentInMillis int `json:"total_time_spent_in_millis"`
} `json:"download"`
} `json:"remote_store"`
SegmentReplication struct {
// Type is json.RawMessage due to difference in opensearch versions from string to int
MaxBytesBehind json.RawMessage `json:"max_bytes_behind"`
TotalBytesBehind json.RawMessage `json:"total_bytes_behind"`
MaxReplicationLag json.RawMessage `json:"max_replication_lag"`
} `json:"segment_replication"`
FileSizes json.RawMessage `json:"file_sizes"`
} `json:"segments"`
Mappings struct {
FieldTypes []struct {
Name string `json:"name"`
Count int `json:"count"`
IndexCount int `json:"index_count"`
} `json:"field_types"`
} `json:"mappings"`
Analysis struct {
CharFilterTypes []json.RawMessage `json:"char_filter_types"`
TokenizerTypes []json.RawMessage `json:"tokenizer_types"`
FilterTypes []json.RawMessage `json:"filter_types"`
AnalyzerTypes []json.RawMessage `json:"analyzer_types"`
BuiltInCharFilters []json.RawMessage `json:"built_in_char_filters"`
BuiltInTokenizers []json.RawMessage `json:"built_in_tokenizers"`
BuiltInFilters []json.RawMessage `json:"built_in_filters"`
BuiltInAnalyzers []json.RawMessage `json:"built_in_analyzers"`
} `json:"analysis"`
RepositoryCleanup struct {
RepositoryCleanup []json.RawMessage `json:"repository_cleanup"`
} `json:"repository_cleanup"`
}
// ClusterStatsNodes is a sub type of ClusterStatsResp containing information about node stats
type ClusterStatsNodes struct {
Count struct {
Total int `json:"total"`
ClusterManager int `json:"cluster_manager"`
CoordinatingOnly int `json:"coordinating_only"`
Data int `json:"data"`
Ingest int `json:"ingest"`
Master int `json:"master"`
RemoteClusterClient int `json:"remote_cluster_client"`
Search int `json:"search"`
} `json:"count"`
Versions []string `json:"versions"`
Os struct {
AvailableProcessors int `json:"available_processors"`
AllocatedProcessors int `json:"allocated_processors"`
Names []struct {
Name string `json:"name"`
Count int `json:"count"`
} `json:"names"`
PrettyNames []struct {
PrettyName string `json:"pretty_name"`
Count int `json:"count"`
} `json:"pretty_names"`
Mem struct {
TotalInBytes int64 `json:"total_in_bytes"`
FreeInBytes int64 `json:"free_in_bytes"`
UsedInBytes int64 `json:"used_in_bytes"`
FreePercent int `json:"free_percent"`
UsedPercent int `json:"used_percent"`
} `json:"mem"`
} `json:"os"`
Process struct {
CPU struct {
Percent int `json:"percent"`
} `json:"cpu"`
OpenFileDescriptors struct {
Min int `json:"min"`
Max int `json:"max"`
Avg int `json:"avg"`
} `json:"open_file_descriptors"`
} `json:"process"`
Jvm struct {
MaxUptimeInMillis int64 `json:"max_uptime_in_millis"`
Versions []struct {
Version string `json:"version"`
VMName string `json:"vm_name"`
VMVersion string `json:"vm_version"`
VMVendor string `json:"vm_vendor"`
BundledJdk bool `json:"bundled_jdk"`
UsingBundledJdk bool `json:"using_bundled_jdk"`
Count int `json:"count"`
} `json:"versions"`
Mem struct {
HeapUsedInBytes int64 `json:"heap_used_in_bytes"`
HeapMaxInBytes int64 `json:"heap_max_in_bytes"`
} `json:"mem"`
Threads int `json:"threads"`
} `json:"jvm"`
Fs struct {
TotalInBytes int64 `json:"total_in_bytes"`
FreeInBytes int64 `json:"free_in_bytes"`
AvailableInBytes int64 `json:"available_in_bytes"`
CacheReservedInBytes int `json:"cache_reserved_in_bytes"`
} `json:"fs"`
Plugins []struct {
Name string `json:"name"`
Version string `json:"version"`
OpensearchVersion string `json:"opensearch_version"`
JavaVersion string `json:"java_version"`
Description string `json:"description"`
Classname string `json:"classname"`
CustomFoldername *string `json:"custom_foldername"`
ExtendedPlugins []string `json:"extended_plugins"`
OptionalExtendedPlugins []string `json:"optional_extended_plugins"`
HasNativeController bool `json:"has_native_controller"`
} `json:"plugins"`
NetworkTypes struct {
TransportTypes map[string]int `json:"transport_types"`
HTTPTypes map[string]int `json:"http_types"`
} `json:"network_types"`
DiscoveryTypes map[string]int `json:"discovery_types"`
PackagingTypes []struct {
Type string `json:"type"`
Count int `json:"count"`
} `json:"packaging_types"`
Ingest struct {
NumberOfPipelines int `json:"number_of_pipelines"`
ProcessorStats json.RawMessage `json:"processor_stats"`
} `json:"ingest"`
}