...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package supportedgvks
16
17 import (
18 iamapi "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/apis/iam/v1beta1"
19 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/dcl/metadata"
20 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/k8s"
21 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/krmtotf"
22 "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/servicemapping/servicemappingloader"
23
24 "k8s.io/apimachinery/pkg/runtime/schema"
25 )
26
27
28
29 func All(smLoader *servicemappingloader.ServiceMappingLoader, serviceMetaLoader metadata.ServiceMetadataLoader) []schema.GroupVersionKind {
30 return resources(smLoader, serviceMetaLoader, true)
31 }
32
33
34
35 func ManualResources(smLoader *servicemappingloader.ServiceMappingLoader, serviceMetaLoader metadata.ServiceMetadataLoader) []schema.GroupVersionKind {
36 return resources(smLoader, serviceMetaLoader, false)
37 }
38
39 func resources(smLoader *servicemappingloader.ServiceMappingLoader, serviceMetaLoader metadata.ServiceMetadataLoader, includesAutoGen bool) []schema.GroupVersionKind {
40 gvks := dynamicTypes(smLoader, serviceMetaLoader, includesAutoGen)
41 gvks = append(gvks, BasedOnHandwrittenIAMTypes()...)
42 return gvks
43 }
44
45
46
47
48 func AllDynamicTypes(smLoader *servicemappingloader.ServiceMappingLoader, serviceMetaLoader metadata.ServiceMetadataLoader) []schema.GroupVersionKind {
49 return dynamicTypes(smLoader, serviceMetaLoader, true)
50 }
51
52 func dynamicTypes(smLoader *servicemappingloader.ServiceMappingLoader, serviceMetaLoader metadata.ServiceMetadataLoader, includesAutoGen bool) []schema.GroupVersionKind {
53 gvks := basedOnServiceMappings(smLoader, includesAutoGen)
54 gvks = append(gvks, BasedOnDCL(serviceMetaLoader)...)
55 return gvks
56 }
57
58 func BasedOnAllServiceMappings(smLoader *servicemappingloader.ServiceMappingLoader) []schema.GroupVersionKind {
59 return basedOnServiceMappings(smLoader, true)
60 }
61
62 func BasedOnManualServiceMappings(smLoader *servicemappingloader.ServiceMappingLoader) []schema.GroupVersionKind {
63 return basedOnServiceMappings(smLoader, false)
64 }
65
66 func basedOnServiceMappings(smLoader *servicemappingloader.ServiceMappingLoader, includesAutoGen bool) []schema.GroupVersionKind {
67 gvkSet := make(map[schema.GroupVersionKind]bool)
68 for _, sm := range smLoader.GetServiceMappings() {
69 for _, rc := range sm.Spec.Resources {
70 if !includesAutoGen && rc.AutoGenerated {
71 continue
72 }
73 gvk := krmtotf.GVKForResource(&sm, &rc)
74 gvkSet[gvk] = true
75 }
76 }
77 return k8s.GVKSetToList(gvkSet)
78 }
79
80 func BasedOnHandwrittenIAMTypes() []schema.GroupVersionKind {
81 return []schema.GroupVersionKind{
82 iamapi.IAMAuditConfigGVK,
83 iamapi.IAMPolicyGVK,
84 iamapi.IAMPolicyMemberGVK,
85 iamapi.IAMPartialPolicyGVK,
86 }
87 }
88
89 func BasedOnDCL(serviceMetaLoader metadata.ServiceMetadataLoader) []schema.GroupVersionKind {
90 serviceList := serviceMetaLoader.GetAllServiceMetadata()
91 gvkList := make([]schema.GroupVersionKind, 0)
92 for _, service := range serviceList {
93 for _, resource := range service.Resources {
94 if resource.Releasable {
95 gvk := metadata.GVKForResource(service, resource)
96 gvkList = append(gvkList, gvk)
97 }
98 }
99 }
100 return gvkList
101 }
102
View as plain text