# SPDX-License-Identifier: MIT
defmodule Testcontainers.Container.CephContainer do
alias Testcontainers.WaitStrategy.HttpWaitStrategy
alias Testcontainers.WaitStrategy.LogWaitStrategy
alias Testcontainers.Container
def new(options \\ []) do
image = Keyword.get(options, :image, "quay.io/ceph/demo:latest-quincy")
access_key = Keyword.get(options, :access_key, "demo")
secret_key = Keyword.get(options, :secret_key, "demo")
bucket = Keyword.get(options, :bucket, "demo")
Container.new(image,
exposed_ports: [3300, 8080],
environment: %{
CEPH_DEMO_UID: "demo",
CEPH_DEMO_BUCKET: bucket,
CEPH_DEMO_ACCESS_KEY: access_key,
CEPH_DEMO_SECRET_KEY: secret_key,
CEPH_PUBLIC_NETWORK: "0.0.0.0/0",
MON_IP: "127.0.0.1",
RGW_NAME: "localhost"
}
)
|> Container.with_waiting_strategies(wait_strategies(8080, bucket))
end
defp wait_strategies(port, bucket) do
[
LogWaitStrategy.new(
~r/.*Bucket 's3:\/\/#{bucket}\/' created.*/,
300_000,
5000
),
HttpWaitStrategy.new("127.0.0.1", port, "/")
]
end
end