Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions asap-planner-rs/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
FROM rust:1.89 AS builder

LABEL maintainer="SketchDB Team"
LABEL description="ASAP Planner (Rust) for SketchDB"

WORKDIR /code

COPY asap-common ./asap-common
COPY Cargo.toml ./
COPY Cargo.lock ./
COPY asap-query-engine/Cargo.toml ./asap-query-engine/
COPY asap-planner-rs/Cargo.toml ./asap-planner-rs/

# Create dummy source files so Cargo can resolve all workspace members
RUN mkdir -p asap-query-engine/src && echo "fn main() {}" > asap-query-engine/src/main.rs && \
mkdir -p asap-planner-rs/src && echo "fn main() {}" > asap-planner-rs/src/main.rs && \
echo "pub fn placeholder() {}" >> asap-planner-rs/src/lib.rs

# Build dependencies (this layer will be cached)
WORKDIR /code/asap-planner-rs
RUN cargo build --release && rm -rf src/

# Copy source code
COPY asap-planner-rs/src ./src

# Build the actual application
RUN touch src/main.rs src/lib.rs && cargo build --release

FROM ubuntu:24.04

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
libssl3 \
zlib1g \
&& rm -rf /var/lib/apt/lists/*

RUN mkdir -p /app/input /app/output

COPY --from=builder /code/target/release/asap-planner /usr/local/bin/asap-planner

ENTRYPOINT ["asap-planner"]
15 changes: 15 additions & 0 deletions asap-planner-rs/docker-compose.yml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
services:
controller:
image: sketchdb-controller:latest
container_name: {{ container_name }}
volumes:
- {{ input_config_path }}:/app/input/config.yaml:ro
- {{ output_dir }}:/app/output
command: [
"--input_config", "/app/input/config.yaml",
"--output_dir", "/app/output",
"--prometheus_scrape_interval", "{{ prometheus_scrape_interval }}",
"--streaming_engine", "{{ streaming_engine }}"{% if punting %},
"--enable-punting"{% endif %}
]
restart: no
18 changes: 18 additions & 0 deletions asap-planner-rs/installation/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

set -e

THIS_DIR=$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")
PARENT_DIR=$(dirname "$THIS_DIR")
WORKSPACE_DIR=$(dirname "$PARENT_DIR")

source "$HOME/.cargo/env"

echo "Building asap-planner-rs Rust binary..."
cd "$WORKSPACE_DIR"
cargo build --release -p asap_planner

echo "Building asap-planner-rs Docker image..."
docker build . -f asap-planner-rs/Dockerfile -t sketchdb-controller:latest

echo "asap-planner-rs Docker image built successfully: sketchdb-controller:latest"
1 change: 1 addition & 0 deletions asap-tools/components.conf
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ asap-common
#QueryEngine
asap-query-engine
asap-planner
asap-planner-rs
#prometheus-kafka-adapter
asap-sketch-ingest
asap-quickstart
Expand Down
6 changes: 3 additions & 3 deletions asap-tools/experiments/experiment_utils/services/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,15 +236,15 @@ def _start_bare_metal(
controller_remote_output_dir: str,
punting: bool,
) -> None:
cmd = "python3 main_controller.py --input_config {} --prometheus_scrape_interval {} --output_dir {} --streaming_engine {}".format(
cmd = "./target/release/asap-planner --input_config {} --prometheus_scrape_interval {} --output_dir {} --streaming_engine {}".format(
controller_input_file,
prometheus_scrape_interval,
controller_remote_output_dir,
streaming_engine,
)
if punting:
cmd += " --enable-punting"
cmd_dir = os.path.join(self.provider.get_home_dir(), "code", "asap-planner")
cmd_dir = os.path.join(self.provider.get_home_dir(), "code", "asap-planner-rs")
self.provider.execute_command(
node_idx=self.node_offset,
cmd=cmd,
Expand All @@ -263,7 +263,7 @@ def _start_containerized(
punting: bool,
):
controller_dir = os.path.join(
self.provider.get_home_dir(), "code", "asap-planner"
self.provider.get_home_dir(), "code", "asap-planner-rs"
)

template_path = os.path.join(controller_dir, "docker-compose.yml.j2")
Expand Down
Loading