Skip to content
This repository was archived by the owner on Aug 11, 2020. It is now read-only.

Commit 753a82c

Browse files
committed
Add separate commands for creating single/multi node experiments
1 parent 48ac838 commit 753a82c

File tree

2 files changed

+17
-25
lines changed

2 files changed

+17
-25
lines changed

paperspace/cli.py

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
11
import click
22

33
from paperspace import commands
4-
from paperspace.constants import MULTI_NODE_TYPES
5-
6-
7-
class OptionRequiredIfMultinode(click.Option):
8-
def full_process_value(self, ctx, value):
9-
value = super(OptionRequiredIfMultinode, self).full_process_value(ctx, value)
10-
11-
if value is None and ctx.params["experimentTypeId"] in MULTI_NODE_TYPES:
12-
msg = "Required if --experimentTypeId is one of: " + ", ".join(*MULTI_NODE_TYPES)
13-
raise click.MissingParameter(ctx=ctx, param=self, message=msg)
14-
15-
return value
164

175

186
def del_if_value_is_none(d):
@@ -32,17 +20,22 @@ def experiments():
3220
pass
3321

3422

35-
@experiments.command()
23+
@experiments.group()
24+
def create():
25+
pass
26+
27+
28+
@create.command()
3629
@click.option("--name", required=True)
37-
@click.option("--experimentTypeId", "experimentTypeId", type=int)
38-
@click.option("--workerCount", "workerCount", required=True, type=int, cls=OptionRequiredIfMultinode)
39-
@click.option("--workerContainer", "workerContainer", cls=OptionRequiredIfMultinode)
40-
@click.option("--workerMachineType", "workerMachineType", cls=OptionRequiredIfMultinode)
41-
@click.option("--workerCommand", "workerCommand", cls=OptionRequiredIfMultinode)
42-
@click.option("--parameterServerContainer", "parameterServerContainer", cls=OptionRequiredIfMultinode)
43-
@click.option("--parameterServerMachineType", "parameterServerMachineType", cls=OptionRequiredIfMultinode)
44-
@click.option("--parameterServerCommand", "parameterServerCommand", cls=OptionRequiredIfMultinode)
45-
@click.option("--parameterServerCount", "parameterServerCount", type=int, cls=OptionRequiredIfMultinode)
30+
@click.option("--experimentTypeId", "experimentTypeId", type=int, required=True)
31+
@click.option("--workerCount", "workerCount", type=int, required=True)
32+
@click.option("--workerContainer", "workerContainer", required=True)
33+
@click.option("--workerMachineType", "workerMachineType", required=True)
34+
@click.option("--workerCommand", "workerCommand", required=True)
35+
@click.option("--parameterServerContainer", "parameterServerContainer", required=True)
36+
@click.option("--parameterServerMachineType", "parameterServerMachineType", required=True)
37+
@click.option("--parameterServerCommand", "parameterServerCommand", required=True)
38+
@click.option("--parameterServerCount", "parameterServerCount", type=int, required=True)
4639
@click.option("--ports", type=int)
4740
@click.option("--workspaceUrl", "workspaceUrl")
4841
@click.option("--projectHandler", "projectHandler")
@@ -56,6 +49,6 @@ def experiments():
5649
@click.option("--parameterServerContainerUser", "parameterServerContainerUser")
5750
@click.option("--parameterServerRegistryContainerUser", "parameterServerRegistryContainerUser")
5851
@click.option("--parameterServerRegistryPassword", "parameterServerRegistryPassword")
59-
def create(**kwargs):
52+
def multinode(**kwargs):
6053
del_if_value_is_none(kwargs)
6154
commands.create_experiments(kwargs)

paperspace/commands.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ def _log_response(response, success_msg, error_msg):
2121
logger.log(error_msg)
2222

2323

24-
def create_experiments(json=None, api=experiments_api):
25-
json = json or {}
24+
def create_experiments(json, api=experiments_api):
2625
response = api.post("/experiments/", json=json, params={"accessToken": config.PAPERSPACE_API_KEY})
2726
_log_response(response, "Experiment created", "Unknown error while creating experiment")

0 commit comments

Comments
 (0)