11import click
22
33from 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
186def 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 )
0 commit comments