@@ -114,16 +114,20 @@ def bucket_remove(self, bucket_name):
114114 helper_lib .sleepForSecond (2 )
115115
116116 def bucket_create (
117- self , bucket_name , ram_size , bucket_type , bucket_compression
117+ self ,
118+ bucket_name ,
119+ ram_size ,
120+ bucket_type ,
121+ bucket_compression ,
122+ retry : bool = True ,
118123 ):
119- logger .debug ("Creating bucket: {} " . format ( bucket_name ) )
124+ logger .debug (f "Creating bucket: { bucket_name } " )
120125 # To create the bucket with given ram size
121126 self .__validate_bucket_name (bucket_name )
122127 if ram_size is None :
123128 logger .debug (
124- "Needed ramsize for bucket_create. Currently it is: {}" .format (
125- ram_size
126- )
129+ "Needed ramsize for bucket_create. "
130+ f"Currently it is: { ram_size } "
127131 )
128132 return
129133
@@ -132,9 +136,7 @@ def bucket_create(
132136 bucket_type = "couchbase"
133137
134138 if bucket_compression is not None :
135- bucket_compression = "--compression-mode {}" .format (
136- bucket_compression
137- )
139+ bucket_compression = f"--compression-mode { bucket_compression } "
138140 else :
139141 bucket_compression = ""
140142
@@ -150,18 +152,40 @@ def bucket_create(
150152 evictionpolicy = policy ,
151153 bucket_type = bucket_type ,
152154 bucket_compression = bucket_compression ,
153- ** env
155+ ** env ,
154156 )
155- logger .debug ("create bucket {}" . format ( command ) )
157+ logger .debug (f "create bucket { command } for { bucket_name } " )
156158 kwargs [ENV_VAR_KEY ].update (env_vars )
157159 output , error , exit_code = utilities .execute_expect (
158160 self .connection , command , ** kwargs
159161 )
160162 logger .debug (
161- "create bucket output: {} {} {}" .format (output , error , exit_code )
163+ f"create bucket output for { bucket_name } : "
164+ f"{ output } { error } { exit_code } "
162165 )
163166 helper_lib .sleepForSecond (2 )
164167
168+ bucket_list = self .bucket_list ()
169+ if (
170+ not any (item ["name" ] == bucket_name for item in bucket_list )
171+ and retry
172+ ):
173+ self .bucket_create (
174+ bucket_name = bucket_name ,
175+ ram_size = ram_size ,
176+ bucket_type = bucket_type ,
177+ bucket_compression = bucket_compression ,
178+ retry = False ,
179+ )
180+ elif not any (item ["name" ] == bucket_name for item in bucket_list ):
181+ error_message = f"Bucket creation failed for { bucket_name } " + (
182+ ", even after retry." if retry else "."
183+ )
184+ logger .error (error_message )
185+ raise BucketOperationError (error_message )
186+
187+ logger .debug (f"Bucket creation successful for { bucket_name } ." )
188+
165189 def bucket_list (self , return_type = list ):
166190 # See the all bucket.
167191 # It will return also other information like ramused, ramsize etc
@@ -249,7 +273,7 @@ def monitor_bucket(self, bucket_name, staging_UUID):
249273 source_port = self .source_config .couchbase_src_port ,
250274 bucket_name = bucket_name ,
251275 uuid = staging_UUID ,
252- ** env
276+ ** env ,
253277 )
254278 kwargs [ENV_VAR_KEY ].update (env_vars )
255279 stdout , stderr , exit_code = utilities .execute_expect (
0 commit comments