Skip to content

Commit 69e2fe2

Browse files
Arta AsadiArta Asadi
authored andcommitted
fix: fix resource structure for cluster role binding
1 parent b0c2329 commit 69e2fe2

File tree

2 files changed

+112
-3
lines changed

2 files changed

+112
-3
lines changed

discovery/describers/kubernetes.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,13 @@ func KubernetesClusterRoleBinding(ctx context.Context, client model.Client, extr
8282
ID: fmt.Sprintf("clusterrolebinding/%s", clusterRoleBinding.Name),
8383
Name: clusterRoleBinding.Name,
8484
Description: model.KubernetesClusterRoleBindingDescription{
85-
MetaObject: clusterRoleBinding.ObjectMeta,
86-
ClusterRoleBinding: clusterRoleBinding,
85+
MetaObject: model.ConvertObjectMeta(clusterRoleBinding.ObjectMeta),
86+
ClusterRoleBinding: model.ClusterRoleBinding{
87+
TypeMeta: model.ConvertTypeMeta(clusterRoleBinding.TypeMeta),
88+
ObjectMeta: model.ConvertObjectMeta(clusterRoleBinding.ObjectMeta),
89+
Subjects: model.ConvertSubject(clusterRoleBinding.Subjects),
90+
RoleRef: model.ConvertRoleRef(clusterRoleBinding.RoleRef),
91+
},
8792
},
8893
}
8994

discovery/provider/model_helpers.go

Lines changed: 105 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package provider
22

33
import (
4+
rbacv1 "k8s.io/api/rbac/v1"
5+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
46
"k8s.io/apimachinery/pkg/types"
57
"time"
68
)
@@ -16,8 +18,31 @@ type Time struct {
1618
time.Time
1719
}
1820

21+
func ConvertTime(timestamp metav1.Time) Time {
22+
return Time{
23+
timestamp.Time,
24+
}
25+
}
26+
27+
func ConvertTimePtr(timestamp *metav1.Time) *Time {
28+
return &Time{
29+
timestamp.Time,
30+
}
31+
}
32+
1933
type FieldsV1 struct {
20-
Raw []byte `json:"-" protobuf:"bytes,1,opt,name=Raw"`
34+
Raw []byte
35+
}
36+
37+
func ConvertFieldsV1(raw metav1.FieldsV1) FieldsV1 {
38+
return FieldsV1{
39+
raw.Raw,
40+
}
41+
}
42+
func ConvertFieldsV1Ptr(raw *metav1.FieldsV1) *FieldsV1 {
43+
return &FieldsV1{
44+
raw.Raw,
45+
}
2146
}
2247

2348
type OwnerReference struct {
@@ -29,6 +54,21 @@ type OwnerReference struct {
2954
BlockOwnerDeletion *bool
3055
}
3156

57+
func ConvertOwnerReferences(ownerReferences []metav1.OwnerReference) []OwnerReference {
58+
ownerRefs := make([]OwnerReference, len(ownerReferences))
59+
for i, ownerRef := range ownerReferences {
60+
ownerRefs[i] = OwnerReference{
61+
APIVersion: ownerRef.APIVersion,
62+
Kind: ownerRef.Kind,
63+
Name: ownerRef.Name,
64+
UID: ownerRef.UID,
65+
Controller: ownerRef.Controller,
66+
BlockOwnerDeletion: ownerRef.BlockOwnerDeletion,
67+
}
68+
}
69+
return ownerRefs
70+
}
71+
3272
type ManagedFieldsEntry struct {
3373
Manager string
3474
Operation ManagedFieldsOperationType
@@ -39,11 +79,34 @@ type ManagedFieldsEntry struct {
3979
Subresource string
4080
}
4181

82+
func ConvertManagedFieldsEntries(managedFieldsEntry []metav1.ManagedFieldsEntry) []ManagedFieldsEntry {
83+
managedFieldsEntries := make([]ManagedFieldsEntry, len(managedFieldsEntry))
84+
for i, entry := range managedFieldsEntry {
85+
managedFieldsEntries[i] = ManagedFieldsEntry{
86+
Manager: entry.Manager,
87+
Operation: ManagedFieldsOperationType(entry.Operation),
88+
APIVersion: entry.APIVersion,
89+
Time: ConvertTimePtr(entry.Time),
90+
FieldsType: entry.FieldsType,
91+
FieldsV1: ConvertFieldsV1Ptr(entry.FieldsV1),
92+
Subresource: entry.Subresource,
93+
}
94+
}
95+
return managedFieldsEntries
96+
}
97+
4298
type TypeMeta struct {
4399
Kind string
44100
APIVersion string
45101
}
46102

103+
func ConvertTypeMeta(typeMeta metav1.TypeMeta) TypeMeta {
104+
return TypeMeta{
105+
Kind: typeMeta.Kind,
106+
APIVersion: typeMeta.APIVersion,
107+
}
108+
}
109+
47110
type ObjectMeta struct {
48111
Name string
49112
GenerateName string
@@ -62,19 +125,60 @@ type ObjectMeta struct {
62125
ManagedFields []ManagedFieldsEntry
63126
}
64127

128+
func ConvertObjectMeta(obj metav1.ObjectMeta) ObjectMeta {
129+
return ObjectMeta{
130+
Name: obj.GetName(),
131+
GenerateName: obj.GetGenerateName(),
132+
Namespace: obj.GetNamespace(),
133+
SelfLink: obj.GetSelfLink(),
134+
UID: obj.GetUID(),
135+
ResourceVersion: obj.GetResourceVersion(),
136+
Generation: obj.GetGeneration(),
137+
CreationTimestamp: ConvertTime(obj.GetCreationTimestamp()),
138+
DeletionTimestamp: ConvertTimePtr(obj.GetDeletionTimestamp()),
139+
DeletionGracePeriodSeconds: obj.GetDeletionGracePeriodSeconds(),
140+
Labels: obj.GetLabels(),
141+
Annotations: obj.GetAnnotations(),
142+
OwnerReferences: ConvertOwnerReferences(obj.GetOwnerReferences()),
143+
Finalizers: obj.GetFinalizers(),
144+
ManagedFields: ConvertManagedFieldsEntries(obj.GetManagedFields()),
145+
}
146+
}
147+
65148
type Subject struct {
66149
Kind string
67150
APIGroup string
68151
Name string
69152
Namespace string
70153
}
71154

155+
func ConvertSubject(srcSubjects []rbacv1.Subject) []Subject {
156+
subjects := make([]Subject, len(srcSubjects))
157+
for i, srcSubject := range srcSubjects {
158+
subjects[i] = Subject{
159+
Kind: srcSubject.Kind,
160+
APIGroup: srcSubject.APIGroup,
161+
Name: srcSubject.Name,
162+
Namespace: srcSubject.Namespace,
163+
}
164+
}
165+
return subjects
166+
}
167+
72168
type RoleRef struct {
73169
APIGroup string
74170
Kind string
75171
Name string
76172
}
77173

174+
func ConvertRoleRef(roleRef rbacv1.RoleRef) RoleRef {
175+
return RoleRef{
176+
APIGroup: roleRef.APIGroup,
177+
Kind: roleRef.Kind,
178+
Name: roleRef.Name,
179+
}
180+
}
181+
78182
type ClusterRoleBinding struct {
79183
TypeMeta
80184
ObjectMeta

0 commit comments

Comments
 (0)