mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
--min-instances and --max-instances Cloud Run publish options, closes #1779
This commit is contained in:
parent
c1396bf860
commit
82167105ee
3 changed files with 56 additions and 15 deletions
|
|
@ -52,6 +52,16 @@ def publish_subcommand(publish):
|
||||||
multiple=True,
|
multiple=True,
|
||||||
help="Additional packages to apt-get install",
|
help="Additional packages to apt-get install",
|
||||||
)
|
)
|
||||||
|
@click.option(
|
||||||
|
"--max-instances",
|
||||||
|
type=int,
|
||||||
|
help="Maximum Cloud Run instances",
|
||||||
|
)
|
||||||
|
@click.option(
|
||||||
|
"--min-instances",
|
||||||
|
type=int,
|
||||||
|
help="Minimum Cloud Run instances",
|
||||||
|
)
|
||||||
def cloudrun(
|
def cloudrun(
|
||||||
files,
|
files,
|
||||||
metadata,
|
metadata,
|
||||||
|
|
@ -79,6 +89,8 @@ def publish_subcommand(publish):
|
||||||
cpu,
|
cpu,
|
||||||
timeout,
|
timeout,
|
||||||
apt_get_extras,
|
apt_get_extras,
|
||||||
|
max_instances,
|
||||||
|
min_instances,
|
||||||
):
|
):
|
||||||
"Publish databases to Datasette running on Cloud Run"
|
"Publish databases to Datasette running on Cloud Run"
|
||||||
fail_if_publish_binary_not_installed(
|
fail_if_publish_binary_not_installed(
|
||||||
|
|
@ -168,12 +180,20 @@ def publish_subcommand(publish):
|
||||||
),
|
),
|
||||||
shell=True,
|
shell=True,
|
||||||
)
|
)
|
||||||
|
extra_deploy_options = []
|
||||||
|
for option, value in (
|
||||||
|
("--memory", memory),
|
||||||
|
("--cpu", cpu),
|
||||||
|
("--max-instances", max_instances),
|
||||||
|
("--min-instances", min_instances),
|
||||||
|
):
|
||||||
|
if value:
|
||||||
|
extra_deploy_options.append("{} {}".format(option, value))
|
||||||
check_call(
|
check_call(
|
||||||
"gcloud run deploy --allow-unauthenticated --platform=managed --image {} {}{}{}".format(
|
"gcloud run deploy --allow-unauthenticated --platform=managed --image {} {}{}".format(
|
||||||
image_id,
|
image_id,
|
||||||
service,
|
service,
|
||||||
" --memory {}".format(memory) if memory else "",
|
" " + " ".join(extra_deploy_options) if extra_deploy_options else "",
|
||||||
" --cpu {}".format(cpu) if cpu else "",
|
|
||||||
),
|
),
|
||||||
shell=True,
|
shell=True,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -251,6 +251,8 @@ datasette publish cloudrun --help
|
||||||
--cpu [1|2|4] Number of vCPUs to allocate in Cloud Run
|
--cpu [1|2|4] Number of vCPUs to allocate in Cloud Run
|
||||||
--timeout INTEGER Build timeout in seconds
|
--timeout INTEGER Build timeout in seconds
|
||||||
--apt-get-install TEXT Additional packages to apt-get install
|
--apt-get-install TEXT Additional packages to apt-get install
|
||||||
|
--max-instances INTEGER Maximum Cloud Run instances
|
||||||
|
--min-instances INTEGER Minimum Cloud Run instances
|
||||||
--help Show this message and exit.
|
--help Show this message and exit.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,19 +105,36 @@ def test_publish_cloudrun(mock_call, mock_output, mock_which, tmp_path_factory):
|
||||||
@mock.patch("datasette.publish.cloudrun.check_output")
|
@mock.patch("datasette.publish.cloudrun.check_output")
|
||||||
@mock.patch("datasette.publish.cloudrun.check_call")
|
@mock.patch("datasette.publish.cloudrun.check_call")
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"memory,cpu,timeout,expected_gcloud_args",
|
"memory,cpu,timeout,min_instances,max_instances,expected_gcloud_args",
|
||||||
[
|
[
|
||||||
["1Gi", None, None, "--memory 1Gi"],
|
["1Gi", None, None, None, None, "--memory 1Gi"],
|
||||||
["2G", None, None, "--memory 2G"],
|
["2G", None, None, None, None, "--memory 2G"],
|
||||||
["256Mi", None, None, "--memory 256Mi"],
|
["256Mi", None, None, None, None, "--memory 256Mi"],
|
||||||
["4", None, None, None],
|
[
|
||||||
["GB", None, None, None],
|
"4",
|
||||||
[None, 1, None, "--cpu 1"],
|
None,
|
||||||
[None, 2, None, "--cpu 2"],
|
None,
|
||||||
[None, 3, None, None],
|
None,
|
||||||
[None, 4, None, "--cpu 4"],
|
None,
|
||||||
["2G", 4, None, "--memory 2G --cpu 4"],
|
None,
|
||||||
[None, None, 1800, "--timeout 1800"],
|
],
|
||||||
|
[
|
||||||
|
"GB",
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
|
],
|
||||||
|
[None, 1, None, None, None, "--cpu 1"],
|
||||||
|
[None, 2, None, None, None, "--cpu 2"],
|
||||||
|
[None, 3, None, None, None, None],
|
||||||
|
[None, 4, None, None, None, "--cpu 4"],
|
||||||
|
["2G", 4, None, None, None, "--memory 2G --cpu 4"],
|
||||||
|
[None, None, 1800, None, None, "--timeout 1800"],
|
||||||
|
[None, None, None, 2, None, "--min-instances 2"],
|
||||||
|
[None, None, None, 2, 4, "--min-instances 2 --max-instances 4"],
|
||||||
|
[None, 2, None, None, 4, "--cpu 2 --max-instances 4"],
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_publish_cloudrun_memory_cpu(
|
def test_publish_cloudrun_memory_cpu(
|
||||||
|
|
@ -127,6 +144,8 @@ def test_publish_cloudrun_memory_cpu(
|
||||||
memory,
|
memory,
|
||||||
cpu,
|
cpu,
|
||||||
timeout,
|
timeout,
|
||||||
|
min_instances,
|
||||||
|
max_instances,
|
||||||
expected_gcloud_args,
|
expected_gcloud_args,
|
||||||
tmp_path_factory,
|
tmp_path_factory,
|
||||||
):
|
):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue