@@ -20,10 +20,12 @@ import (
20
20
"k8s.io/apimachinery/pkg/api/errors"
21
21
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
22
22
"k8s.io/apimachinery/pkg/runtime"
23
+ "k8s.io/apimachinery/pkg/runtime/schema"
23
24
"k8s.io/apimachinery/pkg/runtime/serializer"
24
25
"k8s.io/apimachinery/pkg/util/json"
25
26
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
26
27
"k8s.io/apimachinery/pkg/util/sets"
28
+ "k8s.io/client-go/dynamic"
27
29
kubescheme "k8s.io/client-go/kubernetes/scheme"
28
30
certificatesv1beta1 "k8s.io/client-go/kubernetes/typed/certificates/v1beta1"
29
31
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
@@ -93,6 +95,7 @@ type Gatherer struct {
93
95
client configv1client.ConfigV1Interface
94
96
coreClient corev1client.CoreV1Interface
95
97
networkClient networkv1client.NetworkV1Interface
98
+ dynamicClient dynamic.Interface
96
99
metricsClient rest.Interface
97
100
certClient certificatesv1beta1.CertificatesV1beta1Interface
98
101
registryClient imageregistryv1.ImageregistryV1Interface
@@ -103,7 +106,7 @@ type Gatherer struct {
103
106
104
107
// New creates new Gatherer
105
108
func New (client configv1client.ConfigV1Interface , coreClient corev1client.CoreV1Interface , certClient certificatesv1beta1.CertificatesV1beta1Interface , metricsClient rest.Interface ,
106
- registryClient imageregistryv1.ImageregistryV1Interface , crdClient apixv1beta1client.ApiextensionsV1beta1Interface , networkClient networkv1client.NetworkV1Interface ) * Gatherer {
109
+ registryClient imageregistryv1.ImageregistryV1Interface , crdClient apixv1beta1client.ApiextensionsV1beta1Interface , networkClient networkv1client.NetworkV1Interface , dynamicClient dynamic. Interface ) * Gatherer {
107
110
return & Gatherer {
108
111
client : client ,
109
112
coreClient : coreClient ,
@@ -112,6 +115,7 @@ func New(client configv1client.ConfigV1Interface, coreClient corev1client.CoreV1
112
115
registryClient : registryClient ,
113
116
crdClient : crdClient ,
114
117
networkClient : networkClient ,
118
+ dynamicClient : dynamicClient ,
115
119
}
116
120
}
117
121
@@ -139,6 +143,7 @@ func (i *Gatherer) Gather(ctx context.Context, recorder record.Interface) error
139
143
GatherCertificateSigningRequests (i ),
140
144
GatherCRD (i ),
141
145
GatherHostSubnet (i ),
146
+ GatherMachineSet (i ),
142
147
)
143
148
}
144
149
@@ -732,6 +737,33 @@ func GatherCRD(i *Gatherer) func() ([]record.Record, []error) {
732
737
}
733
738
}
734
739
740
+ //GatherMachineSet collects MachineSet information
741
+ //
742
+ // The Kubernetes api https://github.com/openshift/machine-api-operator/blob/master/pkg/generated/clientset/versioned/typed/machine/v1beta1/machineset.go
743
+ // Response see https://docs.openshift.com/container-platform/4.3/rest_api/index.html#machineset-v1beta1-machine-openshift-io
744
+ //
745
+ // Location in archive: machinesets/
746
+ func GatherMachineSet (i * Gatherer ) func () ([]record.Record , []error ) {
747
+ return func () ([]record.Record , []error ) {
748
+ gvr := schema.GroupVersionResource {Group : "machine.openshift.io" , Version : "v1beta1" , Resource : "machinesets" }
749
+ machineSets , err := i .dynamicClient .Resource (gvr ).List (metav1.ListOptions {})
750
+ if errors .IsNotFound (err ) {
751
+ return nil , nil
752
+ }
753
+ if err != nil {
754
+ return nil , []error {err }
755
+ }
756
+ records := []record.Record {}
757
+ for _ , i := range machineSets .Items {
758
+ records = append (records , record.Record {
759
+ Name : fmt .Sprintf ("machinesets/%s" , i .GetName ()),
760
+ Item : record.JSONMarshaller {Object : i },
761
+ })
762
+ }
763
+ return records , nil
764
+ }
765
+ }
766
+
735
767
func (i * Gatherer ) gatherNamespaceEvents (namespace string ) ([]record.Record , []error ) {
736
768
// do not accidentally collect events for non-openshift namespace
737
769
if ! strings .HasPrefix (namespace , "openshift-" ) {
0 commit comments