@@ -24,6 +24,7 @@ class PreviewContext:
2424 "APPLICATION_NAME" : lambda context : context .gitops_config .application_name ,
2525 "PREVIEW_ID" : lambda context : context .preview_id ,
2626 "PREVIEW_ID_HASH" : lambda context : GitOpsConfig .create_preview_id_hash (context .preview_id ),
27+ "PREVIEW_ID_HASH_SHORT" : lambda context : GitOpsConfig .create_preview_id_hash_short (context .preview_id ),
2728 }
2829
2930 def __init__ (self , path : str , value_template : str ):
@@ -72,7 +73,8 @@ def __post_init__(self) -> None:
7273 assert isinstance (self .application_name , str ), "application_name of wrong type!"
7374 assert isinstance (self .preview_host_template , str ), "preview_host_template of wrong type!"
7475 self .__assert_variables (
75- self .preview_host_template , {"APPLICATION_NAME" , "PREVIEW_ID_HASH" , "PREVIEW_ID" , "PREVIEW_NAMESPACE" }
76+ self .preview_host_template ,
77+ {"APPLICATION_NAME" , "PREVIEW_ID_HASH" , "PREVIEW_ID_HASH_SHORT" , "PREVIEW_ID" , "PREVIEW_NAMESPACE" },
7678 )
7779 assert isinstance (self .preview_template_organisation , str ), "preview_template_organisation of wrong type!"
7880 assert isinstance (self .preview_template_repository , str ), "preview_template_repository of wrong type!"
@@ -88,7 +90,8 @@ def __post_init__(self) -> None:
8890 self .preview_target_namespace_template , str
8991 ), "preview_target_namespace_template of wrong type!"
9092 self .__assert_variables (
91- self .preview_target_namespace_template , {"APPLICATION_NAME" , "PREVIEW_ID_HASH" , "PREVIEW_ID" }
93+ self .preview_target_namespace_template ,
94+ {"APPLICATION_NAME" , "PREVIEW_ID_HASH" , "PREVIEW_ID_HASH_SHORT" , "PREVIEW_ID" },
9295 )
9396 assert isinstance (
9497 self .preview_target_max_namespace_length , int
@@ -104,6 +107,7 @@ def get_preview_host(self, preview_id: str) -> str:
104107 preview_host = self .preview_host_template
105108 preview_host = preview_host .replace ("${APPLICATION_NAME}" , self .application_name )
106109 preview_host = preview_host .replace ("${PREVIEW_ID_HASH}" , self .create_preview_id_hash (preview_id ))
110+ preview_host = preview_host .replace ("${PREVIEW_ID_HASH_SHORT}" , self .create_preview_id_hash_short (preview_id ))
107111 preview_host = preview_host .replace ("${PREVIEW_ID}" , self .__sanitize (preview_id ))
108112 preview_host = preview_host .replace ("${PREVIEW_NAMESPACE}" , self .get_preview_namespace (preview_id ))
109113 return preview_host
@@ -112,6 +116,9 @@ def get_preview_namespace(self, preview_id: str) -> str:
112116 preview_namespace = self .preview_target_namespace_template
113117 preview_namespace = preview_namespace .replace ("${APPLICATION_NAME}" , self .application_name )
114118 preview_namespace = preview_namespace .replace ("${PREVIEW_ID_HASH}" , self .create_preview_id_hash (preview_id ))
119+ preview_namespace = preview_namespace .replace (
120+ "${PREVIEW_ID_HASH_SHORT}" , self .create_preview_id_hash_short (preview_id )
121+ )
115122
116123 current_length = len (preview_namespace ) - len ("${PREVIEW_ID}" )
117124 remaining_length = self .preview_target_max_namespace_length - current_length
@@ -160,6 +167,10 @@ def is_preview_template_equal_target(self) -> bool:
160167 def create_preview_id_hash (preview_id : str ) -> str :
161168 return hashlib .sha256 (preview_id .encode ("utf-8" )).hexdigest ()[:8 ]
162169
170+ @staticmethod
171+ def create_preview_id_hash_short (preview_id : str ) -> str :
172+ return GitOpsConfig .create_preview_id_hash (preview_id )[:3 ]
173+
163174 @staticmethod
164175 def from_yaml (yaml : Any ) -> "GitOpsConfig" :
165176 return _GitOpsConfigYamlParser (yaml ).parse ()
@@ -302,7 +313,11 @@ def __parse_v1(self) -> GitOpsConfig:
302313 preview_target_organisation = config .preview_target_organisation ,
303314 preview_target_repository = config .preview_target_repository ,
304315 preview_target_branch = config .preview_target_branch ,
305- preview_target_namespace_template = add_var_dollar (config .preview_target_namespace_template ),
316+ preview_target_namespace_template = add_var_dollar (
317+ self .__get_string_value_or_default (
318+ "previewConfig.target.namespace" , "{APPLICATION_NAME}-{PREVIEW_ID}-{PREVIEW_ID_HASH}-preview" ,
319+ )
320+ ),
306321 preview_target_max_namespace_length = 63 ,
307322 replacements = replacements ,
308323 )
@@ -359,7 +374,7 @@ def __parse_v2(self) -> GitOpsConfig:
359374 preview_target_repository = preview_target_repository ,
360375 preview_target_branch = preview_target_branch ,
361376 preview_target_namespace_template = self .__get_string_value_or_default (
362- "previewConfig.target.namespace" , "${APPLICATION_NAME}-${PREVIEW_ID}-${PREVIEW_ID_HASH }-preview" ,
377+ "previewConfig.target.namespace" , "${APPLICATION_NAME}-${PREVIEW_ID}-${PREVIEW_ID_HASH_SHORT }-preview" ,
363378 ),
364379 preview_target_max_namespace_length = preview_target_max_namespace_length ,
365380 replacements = replacements ,
0 commit comments