@@ -150,6 +150,67 @@ def build_docker_image_from_base_image(args, verbose=True) -> tuple[int, str]:
150150 return return_code , cloud_docker_image
151151
152152
153+
154+ # def setup_docker_image(args) -> tuple[int, str]:
155+ # """Does steps to verify docker args, check image, and build image (if asked).
156+
157+ # Args:
158+ # args: user provided arguments for running the command.
159+
160+ # Returns:
161+ # tuple:
162+ # 0 if successful and 1 otherwise.
163+ # Name of the docker image to use.
164+ # """
165+ # use_base_docker_image = use_base_docker_image_or_docker_image(args)
166+
167+ # docker_image = args.base_docker_image
168+ # if use_base_docker_image:
169+ # validate_docker_image_code = validate_docker_image(docker_image, args)
170+ # if validate_docker_image_code != 0:
171+ # xpk_exit(validate_docker_image_code)
172+ # build_docker_image_code, docker_image = build_docker_image_from_base_image(
173+ # args
174+ # )
175+ # if build_docker_image_code != 0:
176+ # xpk_exit(build_docker_image_code)
177+ # else:
178+ # docker_image = args.docker_image
179+ # validate_docker_image_code = validate_docker_image(args.docker_image, args)
180+ # if validate_docker_image_code != 0:
181+ # xpk_exit(validate_docker_image_code)
182+
183+ # return 0, docker_image
184+
185+
186+ # def use_base_docker_image_or_docker_image(args) -> bool:
187+ # """Checks for correct docker image arguments.
188+
189+ # Args:
190+ # args: user provided arguments for running the command.
191+
192+ # Returns:
193+ # True if intended to use base docker image, False to use docker image.
194+ # """
195+ # use_base_docker_image = True
196+ # # Check if (base_docker_image and script_dir) or (docker_image) is set.
197+ # if args.docker_image is not None:
198+ # if args.script_dir is not DEFAULT_SCRIPT_DIR:
199+ # xpk_print(
200+ # '`--script-dir` and --docker-image can not be used together. Please'
201+ # ' see `--help` command for more details.'
202+ # )
203+ # xpk_exit(1)
204+ # if args.base_docker_image is not DEFAULT_DOCKER_IMAGE:
205+ # xpk_print(
206+ # '`--base-docker-image` and --docker-image can not be used together.'
207+ # ' Please see `--help` command for more details.'
208+ # )
209+ # xpk_exit(1)
210+ # use_base_docker_image = False
211+ # return use_base_docker_image
212+
213+
153214def setup_docker_image (args ) -> tuple [int , str ]:
154215 """Does steps to verify docker args, check image, and build image (if asked).
155216
@@ -161,50 +222,40 @@ def setup_docker_image(args) -> tuple[int, str]:
161222 0 if successful and 1 otherwise.
162223 Name of the docker image to use.
163224 """
164- use_base_docker_image = use_base_docker_image_or_docker_image (args )
165-
166- docker_image = args .base_docker_image
167- if use_base_docker_image :
168- validate_docker_image_code = validate_docker_image (docker_image , args )
169- if validate_docker_image_code != 0 :
170- xpk_exit (validate_docker_image_code )
171- build_docker_image_code , docker_image = build_docker_image_from_base_image (
172- args
173- )
174- if build_docker_image_code != 0 :
175- xpk_exit (build_docker_image_code )
176- else :
177- docker_image = args .docker_image
178- validate_docker_image_code = validate_docker_image (args .docker_image , args )
179- if validate_docker_image_code != 0 :
180- xpk_exit (validate_docker_image_code )
181-
182- return 0 , docker_image
183-
184225
185- def use_base_docker_image_or_docker_image (args ) -> bool :
186- """Checks for correct docker image arguments.
187-
188- Args:
189- args: user provided arguments for running the command.
190-
191- Returns:
192- True if intended to use base docker image, False to use docker image.
193- """
194- use_base_docker_image = True
195- # Check if (base_docker_image and script_dir) or (docker_image) is set.
196- if args .docker_image is not None :
197- if args .script_dir is not DEFAULT_SCRIPT_DIR :
198- xpk_print (
199- '`--script-dir` and --docker-image can not be used together. Please'
200- ' see `--help` command for more details.'
201- )
202- xpk_exit (1 )
203- if args .base_docker_image is not DEFAULT_DOCKER_IMAGE :
204- xpk_print (
205- '`--base-docker-image` and --docker-image can not be used together.'
206- ' Please see `--help` command for more details.'
207- )
208- xpk_exit (1 )
209- use_base_docker_image = False
210- return use_base_docker_image
226+ docker_image = args .docker_image
227+ if not docker_image or docker_image == DEFAULT_DOCKER_IMAGE :
228+ docker_image = args .base_docker_image # fallback for legacy users
229+
230+ if not docker_image or docker_image == DEFAULT_DOCKER_IMAGE :
231+ xpk_print ("Error: No docker image specified. Please provide --docker-image." )
232+ xpk_exit (1 )
233+
234+ cloud_prefixes = [
235+ "gcr.io" , "docker.pkg.dev" , "us-docker.pkg.dev"
236+ ]
237+ is_cloud_image = any (docker_image .startswith (prefix ) for prefix in cloud_prefixes )
238+
239+ if is_cloud_image :
240+ if args .script_dir is not DEFAULT_SCRIPT_DIR :
241+ xpk_print (
242+ "Error: `--script-dir` cannot be used with a cloud docker image.\n "
243+ "Hint: If you need to customize the image with local scripts, "
244+ "use a local base image (e.g., `ubuntu:20.04`) instead of a prebuilt cloud image."
245+ )
246+ xpk_exit (1 )
247+
248+ validate_code = validate_docker_image (docker_image , args )
249+ if validate_code != 0 :
250+ xpk_exit (validate_code )
251+
252+ else :
253+ validate_code = validate_docker_image (docker_image , args )
254+ if validate_code != 0 :
255+ xpk_exit (validate_code )
256+
257+ build_code , docker_image = build_docker_image_from_base_image (args )
258+ if build_code != 0 :
259+ xpk_exit (build_code )
260+
261+ return 0 , docker_image
0 commit comments