Skip to content

Commit c061114

Browse files
committed
Merge --base-docker-image and --docker-image flag
1 parent 48012d8 commit c061114

File tree

1 file changed

+97
-46
lines changed

1 file changed

+97
-46
lines changed

src/xpk/core/docker_image.py

Lines changed: 97 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
153214
def 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

Comments
 (0)