@@ -5,11 +5,17 @@ package otelcol // import "go.opentelemetry.io/collector/otelcol"
5
5
6
6
import (
7
7
"fmt"
8
+ "sort"
8
9
9
10
"github.com/spf13/cobra"
10
11
"gopkg.in/yaml.v3"
11
12
12
13
"go.opentelemetry.io/collector/component"
14
+ "go.opentelemetry.io/collector/connector"
15
+ "go.opentelemetry.io/collector/exporter"
16
+ "go.opentelemetry.io/collector/extension"
17
+ "go.opentelemetry.io/collector/processor"
18
+ "go.opentelemetry.io/collector/receiver"
13
19
)
14
20
15
21
type componentWithStability struct {
@@ -41,59 +47,59 @@ func newComponentsCommand(set CollectorSettings) *cobra.Command {
41
47
}
42
48
43
49
components := componentsOutput {}
44
- for con := range factories .Connectors {
50
+ for _ , con := range sortFactoriesByType [connector. Factory ]( factories .Connectors ) {
45
51
components .Connectors = append (components .Connectors , componentWithStability {
46
- Name : con ,
52
+ Name : con . Type () ,
47
53
Stability : map [string ]string {
48
- "logs-to-logs" : factories . Connectors [ con ] .LogsToLogsStability ().String (),
49
- "logs-to-metrics" : factories . Connectors [ con ] .LogsToMetricsStability ().String (),
50
- "logs-to-traces" : factories . Connectors [ con ] .LogsToTracesStability ().String (),
54
+ "logs-to-logs" : con .LogsToLogsStability ().String (),
55
+ "logs-to-metrics" : con .LogsToMetricsStability ().String (),
56
+ "logs-to-traces" : con .LogsToTracesStability ().String (),
51
57
52
- "metrics-to-logs" : factories . Connectors [ con ] .MetricsToLogsStability ().String (),
53
- "metrics-to-metrics" : factories . Connectors [ con ] .MetricsToMetricsStability ().String (),
54
- "metrics-to-traces" : factories . Connectors [ con ] .MetricsToTracesStability ().String (),
58
+ "metrics-to-logs" : con .MetricsToLogsStability ().String (),
59
+ "metrics-to-metrics" : con .MetricsToMetricsStability ().String (),
60
+ "metrics-to-traces" : con .MetricsToTracesStability ().String (),
55
61
56
- "traces-to-logs" : factories . Connectors [ con ] .TracesToLogsStability ().String (),
57
- "traces-to-metrics" : factories . Connectors [ con ] .TracesToMetricsStability ().String (),
58
- "traces-to-traces" : factories . Connectors [ con ] .TracesToTracesStability ().String (),
62
+ "traces-to-logs" : con .TracesToLogsStability ().String (),
63
+ "traces-to-metrics" : con .TracesToMetricsStability ().String (),
64
+ "traces-to-traces" : con .TracesToTracesStability ().String (),
59
65
},
60
66
})
61
67
}
62
- for ext := range factories .Extensions {
68
+ for _ , ext := range sortFactoriesByType [extension. Factory ]( factories .Extensions ) {
63
69
components .Extensions = append (components .Extensions , componentWithStability {
64
- Name : ext ,
70
+ Name : ext . Type () ,
65
71
Stability : map [string ]string {
66
- "extension" : factories . Extensions [ ext ] .ExtensionStability ().String (),
72
+ "extension" : ext .ExtensionStability ().String (),
67
73
},
68
74
})
69
75
}
70
- for prs := range factories .Processors {
76
+ for _ , prs := range sortFactoriesByType [processor. Factory ]( factories .Processors ) {
71
77
components .Processors = append (components .Processors , componentWithStability {
72
- Name : prs ,
78
+ Name : prs . Type () ,
73
79
Stability : map [string ]string {
74
- "logs" : factories . Processors [ prs ] .LogsProcessorStability ().String (),
75
- "metrics" : factories . Processors [ prs ] .MetricsProcessorStability ().String (),
76
- "traces" : factories . Processors [ prs ] .TracesProcessorStability ().String (),
80
+ "logs" : prs .LogsProcessorStability ().String (),
81
+ "metrics" : prs .MetricsProcessorStability ().String (),
82
+ "traces" : prs .TracesProcessorStability ().String (),
77
83
},
78
84
})
79
85
}
80
- for rcv := range factories .Receivers {
86
+ for _ , rcv := range sortFactoriesByType [receiver. Factory ]( factories .Receivers ) {
81
87
components .Receivers = append (components .Receivers , componentWithStability {
82
- Name : rcv ,
88
+ Name : rcv . Type () ,
83
89
Stability : map [string ]string {
84
- "logs" : factories . Receivers [ rcv ] .LogsReceiverStability ().String (),
85
- "metrics" : factories . Receivers [ rcv ] .MetricsReceiverStability ().String (),
86
- "traces" : factories . Receivers [ rcv ] .TracesReceiverStability ().String (),
90
+ "logs" : rcv .LogsReceiverStability ().String (),
91
+ "metrics" : rcv .MetricsReceiverStability ().String (),
92
+ "traces" : rcv .TracesReceiverStability ().String (),
87
93
},
88
94
})
89
95
}
90
- for exp := range factories .Exporters {
96
+ for _ , exp := range sortFactoriesByType [exporter. Factory ]( factories .Exporters ) {
91
97
components .Exporters = append (components .Exporters , componentWithStability {
92
- Name : exp ,
98
+ Name : exp . Type () ,
93
99
Stability : map [string ]string {
94
- "logs" : factories . Exporters [ exp ] .LogsExporterStability ().String (),
95
- "metrics" : factories . Exporters [ exp ] .MetricsExporterStability ().String (),
96
- "traces" : factories . Exporters [ exp ] .TracesExporterStability ().String (),
100
+ "logs" : exp .LogsExporterStability ().String (),
101
+ "metrics" : exp .MetricsExporterStability ().String (),
102
+ "traces" : exp .TracesExporterStability ().String (),
97
103
},
98
104
})
99
105
}
@@ -107,3 +113,24 @@ func newComponentsCommand(set CollectorSettings) *cobra.Command {
107
113
},
108
114
}
109
115
}
116
+
117
+ func sortFactoriesByType [T component.Factory ](factories map [component.Type ]T ) []T {
118
+ // Gather component types (factories map keys)
119
+ componentTypes := make ([]component.Type , 0 , len (factories ))
120
+ for componentType := range factories {
121
+ componentTypes = append (componentTypes , componentType )
122
+ }
123
+
124
+ // Sort component types as strings
125
+ sort .Slice (componentTypes , func (i , j int ) bool {
126
+ return componentTypes [i ].String () < componentTypes [j ].String ()
127
+ })
128
+
129
+ // Build and return list of factories, sorted by component types
130
+ sortedFactories := make ([]T , 0 , len (factories ))
131
+ for _ , componentType := range componentTypes {
132
+ sortedFactories = append (sortedFactories , factories [componentType ])
133
+ }
134
+
135
+ return sortedFactories
136
+ }
0 commit comments