@@ -20,6 +20,20 @@ import (
2020 "fmt"
2121
2222 "k8s.io/apimachinery/pkg/types"
23+ kvalidation "k8s.io/apimachinery/pkg/util/validation"
24+ "k8s.io/utils/strings"
25+ )
26+
27+ const (
28+ tplCommon = "d8v-%s-%s-%s"
29+ tplDVCRAuthSecret = "d8v-%s-dvcr-auth-%s-%s"
30+ tplDVCRCABundle = "d8v-%s-dvcr-ca-%s-%s"
31+ tplCABundle = "d8v-%s-ca-%s-%s"
32+ tplImagePullSecret = "d8v-%s-pull-image-%s-%s"
33+ tplImporterPod = "d8v-%s-importer-%s-%s"
34+ tplBounderPod = "d8v-%s-bounder-%s-%s"
35+ tplUploaderPod = "d8v-%s-uploader-%s-%s"
36+ tplUploaderTLSSecret = "d8v-%s-tls-%s-%s"
2337)
2438
2539// Generator calculates names for supplemental resources, e.g. ImporterPod, AuthSecret or CABundleConfigMap.
@@ -33,78 +47,75 @@ func NewGenerator(prefix, name, namespace string, uid types.UID) *Generator {
3347 }
3448}
3549
50+ func (g * Generator ) generateName (template string , maxLength int ) types.NamespacedName {
51+ maxNameLen := maxLength - len (template ) + 6 - len (g .Prefix ) - len (g .UID ) // 6 is for %s placeholders
52+ name := fmt .Sprintf (template , g .Prefix , strings .ShortenString (g .Name , maxNameLen ), g .UID )
53+ return types.NamespacedName {
54+ Name : name ,
55+ Namespace : g .Namespace ,
56+ }
57+ }
58+
3659// DVCRAuthSecret returns name and namespace for auth Secret copy.
3760func (g * Generator ) DVCRAuthSecret () types.NamespacedName {
38- name := fmt .Sprintf ("d8v-%s-dvcr-auth-%s-%s" , g .Prefix , g .Name , g .UID )
39- return g .shortenNamespaced (name )
61+ return g .generateName (tplDVCRAuthSecret , kvalidation .DNS1123SubdomainMaxLength )
4062}
4163
4264// DVCRAuthSecretForDV returns name and namespace for auth Secret copy
4365// compatible with DataVolume: with accessKeyId and secretKey fields.
4466func (g * Generator ) DVCRAuthSecretForDV () types.NamespacedName {
45- name := fmt .Sprintf ("d8v-%s-dvcr-auth-%s-%s" , g .Prefix , g .Name , g .UID )
46- return g .shortenNamespaced (name )
67+ return g .generateName (tplDVCRAuthSecret , kvalidation .DNS1123SubdomainMaxLength )
4768}
4869
4970// DVCRCABundleConfigMapForDV returns name and namespace for ConfigMap with ca.crt.
5071func (g * Generator ) DVCRCABundleConfigMapForDV () types.NamespacedName {
51- name := fmt .Sprintf ("d8v-%s-dvcr-ca-%s-%s" , g .Prefix , g .Name , g .UID )
52- return g .shortenNamespaced (name )
72+ return g .generateName (tplDVCRCABundle , kvalidation .DNS1123SubdomainMaxLength )
5373}
5474
5575// CABundleConfigMap returns name and namespace for ConfigMap which contains caBundle from dataSource.
5676func (g * Generator ) CABundleConfigMap () types.NamespacedName {
57- name := fmt .Sprintf ("d8v-%s-ca-%s-%s" , g .Prefix , g .Name , g .UID )
58- return g .shortenNamespaced (name )
77+ return g .generateName (tplCABundle , kvalidation .DNS1123SubdomainMaxLength )
5978}
6079
6180// ImagePullSecret returns name and namespace for image pull secret for the containerImage dataSource.
6281func (g * Generator ) ImagePullSecret () types.NamespacedName {
63- name := fmt .Sprintf ("d8v-%s-pull-image-%s-%s" , g .Prefix , g .Name , g .UID )
64- return g .shortenNamespaced (name )
82+ return g .generateName (tplImagePullSecret , kvalidation .DNS1123SubdomainMaxLength )
6583}
6684
6785// ImporterPod generates name for importer Pod.
6886func (g * Generator ) ImporterPod () types.NamespacedName {
69- name := fmt .Sprintf ("d8v-%s-importer-%s-%s" , g .Prefix , g .Name , g .UID )
70- return g .shortenNamespaced (name )
87+ return g .generateName (tplImporterPod , kvalidation .DNS1123SubdomainMaxLength )
7188}
7289
7390// BounderPod generates name for bounder Pod.
7491func (g * Generator ) BounderPod () types.NamespacedName {
75- name := fmt .Sprintf ("d8v-%s-bounder-%s-%s" , g .Prefix , g .Name , g .UID )
76- return g .shortenNamespaced (name )
92+ return g .generateName (tplBounderPod , kvalidation .DNS1123SubdomainMaxLength )
7793}
7894
7995// UploaderPod generates name for uploader Pod.
8096func (g * Generator ) UploaderPod () types.NamespacedName {
81- name := fmt .Sprintf ("d8v-%s-uploader-%s-%s" , g .Prefix , g .Name , g .UID )
82- return g .shortenNamespaced (name )
97+ return g .generateName (tplUploaderPod , kvalidation .DNS1123SubdomainMaxLength )
8398}
8499
85100// UploaderService generates name for uploader Service.
86101func (g * Generator ) UploaderService () types.NamespacedName {
87- name := fmt .Sprintf ("d8v-%s-%s-%s" , g .Prefix , g .Name , g .UID )
88- return g .shortenNamespaced (name )
102+ return g .generateName (tplCommon , kvalidation .DNS1123LabelMaxLength )
89103}
90104
91105// UploaderIngress generates name for uploader Ingress.
92106func (g * Generator ) UploaderIngress () types.NamespacedName {
93- name := fmt .Sprintf ("d8v-%s-%s-%s" , g .Prefix , g .Name , g .UID )
94- return g .shortenNamespaced (name )
107+ return g .generateName (tplCommon , kvalidation .DNS1123SubdomainMaxLength )
95108}
96109
97110// UploaderTLSSecretForIngress generates name for uploader tls secret.
98111func (g * Generator ) UploaderTLSSecretForIngress () types.NamespacedName {
99- name := fmt .Sprintf ("d8v-%s-tls-%s-%s" , g .Prefix , g .Name , g .UID )
100- return g .shortenNamespaced (name )
112+ return g .generateName (tplUploaderTLSSecret , kvalidation .DNS1123SubdomainMaxLength )
101113}
102114
103115// DataVolume generates name for underlying DataVolume.
104116// DataVolume is always one for vmd/vmi, so prefix is used.
105117func (g * Generator ) DataVolume () types.NamespacedName {
106- dvName := fmt .Sprintf ("d8v-%s-%s-%s" , g .Prefix , g .Name , g .UID )
107- return g .shortenNamespaced (dvName )
118+ return g .generateName (tplCommon , kvalidation .DNS1123SubdomainMaxLength )
108119}
109120
110121func (g * Generator ) PersistentVolumeClaim () types.NamespacedName {
@@ -113,6 +124,5 @@ func (g *Generator) PersistentVolumeClaim() types.NamespacedName {
113124
114125// NetworkPolicy generates name for NetworkPolicy.
115126func (g * Generator ) NetworkPolicy () types.NamespacedName {
116- name := fmt .Sprintf ("d8v-%s-%s-%s" , g .Prefix , g .Name , g .UID )
117- return g .shortenNamespaced (name )
127+ return g .generateName (tplCommon , kvalidation .DNS1123SubdomainMaxLength )
118128}
0 commit comments