Skip to content

Commit a3945c0

Browse files
committed
network parameter
1 parent 77e417d commit a3945c0

3 files changed

Lines changed: 43 additions & 18 deletions

File tree

35.3 KB
Binary file not shown.

src/datacustomcode/cli.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,12 @@ def configure(
7171

7272
@cli.command()
7373
@click.argument("path", default="payload")
74-
def zip(path: str):
74+
@click.option("--network", default="default")
75+
def zip(path: str, network: str):
7576
from datacustomcode.deploy import zip
7677

7778
logger.debug("Zipping project")
78-
zip(path)
79+
zip(path, network)
7980

8081

8182
@cli.command()
@@ -84,6 +85,7 @@ def zip(path: str):
8485
@click.option("--version", default="0.0.1")
8586
@click.option("--description", default="Custom Data Transform Code")
8687
@click.option("--profile", default="default")
88+
@click.option("--network", default="default")
8789
@click.option(
8890
"--cpu-size",
8991
default="CPU_2XL",
@@ -98,7 +100,13 @@ def zip(path: str):
98100
Choose based on your workload requirements.""",
99101
)
100102
def deploy(
101-
path: str, name: str, version: str, description: str, cpu_size: str, profile: str
103+
path: str,
104+
name: str,
105+
version: str,
106+
description: str,
107+
cpu_size: str,
108+
profile: str,
109+
network: str
102110
):
103111
from datacustomcode.credentials import Credentials
104112
from datacustomcode.deploy import TransformationJobMetadata, deploy_full
@@ -132,7 +140,7 @@ def deploy(
132140
fg="red",
133141
)
134142
raise click.Abort() from None
135-
deploy_full(path, metadata, credentials)
143+
deploy_full(path, metadata, credentials, network)
136144

137145

138146
@cli.command()

src/datacustomcode/deploy.py

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -163,34 +163,49 @@ def create_deployment(
163163
ZIP_FILE_NAME = "deployment.zip"
164164

165165

166-
def prepare_dependency_archive(directory: str) -> None:
166+
def prepare_dependency_archive(directory: str, docker_network: str) -> None:
167167
cmd = f"docker images -q {DOCKER_IMAGE_NAME}"
168168
image_exists = cmd_output(cmd)
169169

170170
if not image_exists:
171-
logger.info("Building docker image...")
172-
cmd = (
173-
f"{PLATFORM_ENV_VAR} docker build -t {DOCKER_IMAGE_NAME} "
174-
f"-f Dockerfile.dependencies ."
175-
)
171+
logger.info(f"Building docker image with docker network: {docker_network}...")
172+
cmd = docker_build_cmd(docker_network)
176173
cmd_output(cmd)
177174

178175
with tempfile.TemporaryDirectory() as temp_dir:
179-
logger.info("Building dependencies archive")
176+
logger.info(f"Building dependencies archive with docker network: {docker_network}")
180177
shutil.copy("requirements.txt", temp_dir)
181178
shutil.copy("build_native_dependencies.sh", temp_dir)
182-
cmd = (
183-
f"{PLATFORM_ENV_VAR} docker run --rm "
184-
f"-v {temp_dir}:/workspace "
185-
f"{DOCKER_IMAGE_NAME}"
186-
)
179+
cmd = docker_run_cmd(docker_network, temp_dir)
187180
cmd_output(cmd)
188181
archives_temp_path = os.path.join(temp_dir, DEPENDENCIES_ARCHIVE_FULL_NAME)
189182
os.makedirs(os.path.dirname(DEPENDENCIES_ARCHIVE_PATH), exist_ok=True)
190183
shutil.copy(archives_temp_path, DEPENDENCIES_ARCHIVE_PATH)
191184

192185
logger.info(f"Dependencies archived to {DEPENDENCIES_ARCHIVE_PATH}")
193186

187+
def docker_build_cmd(network: str) -> str:
188+
cmd = (
189+
f"{PLATFORM_ENV_VAR} docker build -t {DOCKER_IMAGE_NAME} "
190+
f"--file Dockerfile.dependencies . "
191+
)
192+
193+
if network != "default":
194+
cmd = cmd + f"--network {network}"
195+
logger.debug(f"Docker build command: {cmd}")
196+
return cmd
197+
198+
def docker_run_cmd(network: str, temp_dir) -> str:
199+
cmd = (
200+
f"{PLATFORM_ENV_VAR} docker run --rm "
201+
f"-v {temp_dir}:/workspace "
202+
f"{DOCKER_IMAGE_NAME} "
203+
)
204+
205+
if network != "default":
206+
cmd = cmd + f"--network {network} "
207+
logger.debug(f"Docker run command: {cmd}")
208+
return cmd
194209

195210
class DeploymentsResponse(BaseModel):
196211
deploymentStatus: str
@@ -366,13 +381,14 @@ def upload_zip(file_upload_url: str) -> None:
366381

367382
def zip(
368383
directory: str,
384+
docker_network: str,
369385
):
370386
# Create a zip file excluding .DS_Store files
371387
import zipfile
372388

373389
# prepare payload only if requirements.txt is non-empty
374390
if has_nonempty_requirements_file(directory):
375-
prepare_dependency_archive(directory)
391+
prepare_dependency_archive(directory, docker_network)
376392
else:
377393
logger.info(
378394
f"Skipping dependency archive: requirements.txt is missing or empty "
@@ -396,6 +412,7 @@ def deploy_full(
396412
directory: str,
397413
metadata: TransformationJobMetadata,
398414
credentials: Credentials,
415+
docker_network: str,
399416
callback=None,
400417
) -> AccessTokenResponse:
401418
"""Deploy a data transform in the DataCloud."""
@@ -406,7 +423,7 @@ def deploy_full(
406423

407424
# create deployment and upload payload
408425
deployment = create_deployment(access_token, metadata)
409-
zip(directory)
426+
zip(directory, docker_network)
410427
upload_zip(deployment.fileUploadUrl)
411428
wait_for_deployment(access_token, metadata, callback)
412429

0 commit comments

Comments
 (0)