77from hcloud .images .domain import Image , CreateImageResponse
88from hcloud .iso .domain import Iso
99from hcloud .server_types .client import BoundServerType
10+ from hcloud .datacenters .client import BoundDatacenter
1011
1112
1213class BoundServer (BoundModelBase ):
1314 model = Server
1415
1516 def __init__ (self , client , data ):
17+
18+ datacenter = data .get ('datacenter' )
19+ if datacenter is not None :
20+ data ['datacenter' ] = BoundDatacenter (client ._client .datacenters , datacenter )
21+
1622 volumes = data .get ('volumes' , [])
1723 if volumes :
1824 volumes = [BoundVolume (client ._client .volumes , {"id" : volume }, complete = False ) for volume in volumes ]
@@ -22,7 +28,6 @@ def __init__(self, client, data):
2228 if image is not None :
2329 # data['image'] = BoundImage(client._client.images, image, complete=True) # When Image Client is implemented
2430 data ['image' ] = Image (** image )
25- print (data ['image' ].id )
2631
2732 iso = data .get ("iso" , None )
2833 if iso is not None :
@@ -139,20 +144,19 @@ def get_all(self, name=None, label_selector=None):
139144 return [BoundServer (self , server_data ) for server_data in response ['servers' ]]
140145
141146 def create (self ,
142- name , # type: str
143- server_type , # type: str
144- image , # type: Image
145- ssh_keys = None , # type: Optional[List[str]]
146- volumes = None , # type: Optional[List[Volume]]
147- user_data = None , # type: Optional[str]
148- labels = None , # type: Optional[Dict[str, str]]
149- location = None , # type: Optional[str]
150- datacenter = None , # type: Optional[str]
151- start_after_create = True # type: Optional[bool]
147+ name , # type: str
148+ server_type , # type: str
149+ image , # type: Image
150+ ssh_keys = None , # type: Optional[List[str]]
151+ volumes = None , # type: Optional[List[Volume]]
152+ user_data = None , # type: Optional[str]
153+ labels = None , # type: Optional[Dict[str, str]]
154+ location = None , # type: Optional[Location]
155+ datacenter = None , # type: Optional[Datacenter]
156+ start_after_create = True , # type: Optional[bool]
157+ automount = None # type: Optional[bool]
152158 ):
153159 # type: (...) -> CreateServerResponse
154- # TODO: convert location str type to locations.domain.Location type, when implementation is ready
155- # TODO: convert datacenter str type to datacenters.domain.Datacenter type, when implementation is ready
156160 """
157161 Should be visible in docs
158162 :param name:
@@ -170,12 +174,15 @@ def create(self,
170174 data = {
171175 'name' : name ,
172176 'server_type' : server_type ,
173- "start_after_create" : start_after_create
177+ "start_after_create" : start_after_create ,
178+ "image" : image .id_or_name
174179 }
175- if image .id is not None :
176- data ['image' ] = image .id
177- else :
178- data ['image' ] = image .name
180+
181+ if location is not None :
182+ data ['location' ] = location .id_or_name
183+
184+ if datacenter is not None :
185+ data ['datacenter' ] = datacenter .id_or_name
179186
180187 if ssh_keys is not None :
181188 data ['ssh_keys' ] = ssh_keys
@@ -185,10 +192,8 @@ def create(self,
185192 data ['user_data' ] = user_data
186193 if labels is not None :
187194 data ['labels' ] = labels
188- if location is not None :
189- data ['location' ] = location
190- if datacenter is not None :
191- data ["datacenter" ] = datacenter
195+ if automount is not None :
196+ data ["automount" ] = automount
192197
193198 response = self ._client .request (url = "/servers" , method = "POST" , json = data )
194199
0 commit comments