1+ import hashlib
12import logging
23import os
34import shutil
89from gitopscli .io .tmp_dir import create_tmp_dir , delete_tmp_dir
910from gitopscli .gitops_exception import GitOpsException
1011
12+
1113# pylint: disable=too-many-statements
1214
1315
1416def create_preview_command (
15- username ,
16- password ,
17- git_user ,
18- git_email ,
19- organisation ,
20- repository_name ,
21- git_provider ,
22- git_provider_url ,
23- git_hash ,
24- preview_id ,
25- deployment_replaced = None ,
26- deployment_exists = None ,
27- deployment_new = None ,
17+ username ,
18+ password ,
19+ git_user ,
20+ git_email ,
21+ organisation ,
22+ repository_name ,
23+ git_provider ,
24+ git_provider_url ,
25+ git_hash ,
26+ preview_id ,
27+ deployment_replaced_callback = None ,
28+ deployment_exists_callback = None ,
29+ deployment_new_callback = None ,
2830):
29-
3031 apps_tmp_dir = create_tmp_dir ()
3132 root_tmp_dir = create_tmp_dir ()
3233
@@ -72,7 +73,8 @@ def create_preview_command(
7273 else :
7374 raise GitOpsException (f"The preview template folder does not exist: { preview_template_folder_name } " )
7475
75- new_preview_folder_name = gitops_config .application_name + "-" + preview_id + "-preview"
76+ hashed_preview_id = hashlib .sha256 (preview_id .encode ("utf-8" )).hexdigest ()[:8 ]
77+ new_preview_folder_name = gitops_config .application_name + "-" + hashed_preview_id + "-preview"
7678 logging .info ("New folder for preview: %s" , new_preview_folder_name )
7779 branch_preview_env_already_exist = os .path .isdir (root_git .get_full_file_path (new_preview_folder_name ))
7880 logging .info ("Is preview env already existing for branch? %s" , branch_preview_env_already_exist )
@@ -100,16 +102,16 @@ def create_preview_command(
100102 value_replaced ,
101103 )
102104 if not value_replaced :
103- if deployment_replaced :
104- deployment_replaced (apps_git , new_image_tag )
105+ if deployment_replaced_callback :
106+ deployment_replaced_callback (apps_git , new_image_tag )
105107 return
106108
107109 if branch_preview_env_already_exist :
108- if deployment_exists :
109- deployment_exists (apps_git , gitops_config , route_host )
110+ if deployment_exists_callback :
111+ deployment_exists_callback (apps_git , gitops_config , route_host )
110112 else :
111- if deployment_new :
112- deployment_new (apps_git , gitops_config , route_host )
113+ if deployment_new_callback :
114+ deployment_new_callback (apps_git , gitops_config , route_host )
113115
114116 root_git .commit (f"Update preview environment for '{ gitops_config .application_name } ' and git hash '{ git_hash } '." )
115117 root_git .push (config_branch )
@@ -120,14 +122,14 @@ def create_preview_command(
120122
121123
122124def __replace_value (
123- gitops_config ,
124- new_image_tag ,
125- new_preview_folder_name ,
126- replacement ,
127- root_git ,
128- route_host ,
129- shortened_branch_hash ,
130- value_replaced ,
125+ gitops_config ,
126+ new_image_tag ,
127+ new_preview_folder_name ,
128+ replacement ,
129+ root_git ,
130+ route_host ,
131+ shortened_branch_hash ,
132+ value_replaced ,
131133):
132134 replacement_value = None
133135 logging .info ("Replacement: %s" , replacement )
@@ -152,7 +154,7 @@ def __replace_value(
152154
153155
154156def __create_new_preview_env (
155- git_hash , new_preview_folder_name , preview_template_folder_name , root_git , app_name ,
157+ git_hash , new_preview_folder_name , preview_template_folder_name , root_git , app_name ,
156158):
157159 shutil .copytree (
158160 root_git .get_full_file_path (preview_template_folder_name ), root_git .get_full_file_path (new_preview_folder_name ),
0 commit comments