33"""
44
55from typing import List , Optional , Literal , Union
6+
67from pydantic import BaseModel , Field , IPvAnyAddress
78
89
@@ -15,6 +16,7 @@ class Role(BaseModel):
1516 name : str
1617 tags : Optional [List [str ]]
1718
19+
1820class UserRole (BaseModel ):
1921 """
2022 Allows users to add custom ansible roles
@@ -23,9 +25,11 @@ class UserRole(BaseModel):
2325 roles : List [Role ]
2426 varsFiles : Optional [List [str ]] = Field (default = [])
2527
28+
2629class CloudScheduling (BaseModel ):
2730 sshTimeout : Optional [int ] = 5
2831
32+
2933class BootVolume (BaseModel ):
3034 """
3135 Holds information about where the server boots from
@@ -34,6 +38,7 @@ class BootVolume(BaseModel):
3438 terminate : Optional [bool ] = True
3539 size : Optional [int ] = 50
3640
41+
3742class Volume (BaseModel ):
3843 """
3944 Holds volume/attached storage information
@@ -90,6 +95,7 @@ class ElasticScheduling(BaseModel):
9095 ResumeTimeout : Optional [int ] = 1800
9196 TreeWidth : Optional [int ] = 128
9297
98+
9399class SlurmConf (BaseModel ):
94100 """
95101 Holds info on basic Slurm settings
@@ -100,13 +106,15 @@ class SlurmConf(BaseModel):
100106 munge_key : Optional [str ] = None
101107 elastic_scheduling : Optional [ElasticScheduling ] = None
102108
109+
103110class Gateway (BaseModel ):
104111 """
105112 Holds info regarding whether a gateway is used to connect to the master
106113 """
107114 ip : str
108115 portFunction : str
109116
117+
110118class MasterConfig (BaseModel ):
111119 """
112120 Holds info regarding the configuration
@@ -140,6 +148,7 @@ class MasterConfig(BaseModel):
140148 masterInstance : Instance
141149 bootVolume : Optional [BootVolume ] = None
142150
151+
143152class OtherConfig (BaseModel ):
144153 """
145154 Holds info about other configurations
@@ -156,16 +165,20 @@ class OtherConfig(BaseModel):
156165 vpnInstance : Instance
157166 bootVolume : Optional [BootVolume ] = None
158167
168+
159169class ConfigurationsModel (BaseModel ):
160170 configurations : List [Union [MasterConfig , OtherConfig ]]
161171
172+
162173class MinimalConfigurationModel (BaseModel ):
163174 infrastructure : str
164175 cloud : str
165176
177+
166178class MinimalConfigurationsModel (BaseModel ):
167179 configurations : List [MinimalConfigurationModel ]
168180
181+
169182class ValidationResponseModel (BaseModel ):
170183 """
171184 ResponseModel for validate
0 commit comments