@@ -77,33 +77,40 @@ def create_device(self,
7777 plan ,
7878 facility ,
7979 operating_system ,
80+ always_pxe = False ,
8081 billing_cycle = 'hourly' ,
81- userdata = '' ,
82- locked = False ,
83- tags = {},
8482 features = {},
8583 ipxe_script_url = '' ,
86- always_pxe = False ,
87- public_ipv4_subnet_size = 31 ):
84+ locked = False ,
85+ public_ipv4_subnet_size = 31 ,
86+ spot_instance = False ,
87+ spot_price_max = - 1 ,
88+ tags = {},
89+ termination_time = None ,
90+ userdata = '' ):
8891
8992 params = {
90- 'hostname' : hostname ,
91- 'project_id' : project_id ,
92- 'plan' : plan ,
93- 'facility' : facility ,
94- 'operating_system' : operating_system ,
9593 'billing_cycle' : billing_cycle ,
96- 'userdata' : userdata ,
97- 'locked' : locked ,
94+ 'facility' : facility ,
9895 'features' : features ,
96+ 'hostname' : hostname ,
97+ 'locked' : locked ,
98+ 'operating_system' : operating_system ,
99+ 'plan' : plan ,
100+ 'project_id' : project_id ,
99101 'public_ipv4_subnet_size' : public_ipv4_subnet_size ,
100102 'tags' : tags ,
103+ 'userdata' : userdata ,
101104 }
102105
103106 if ipxe_script_url != '' :
104- params ['operating_system' ] = 'custom_ipxe'
105- params ['ipxe_script_url' ] = ipxe_script_url
106107 params ['always_pxe' ] = always_pxe
108+ params ['ipxe_script_url' ] = ipxe_script_url
109+ params ['operating_system' ] = 'custom_ipxe'
110+ if spot_instance :
111+ params ['spot_instance' ] = spot_instance
112+ params ['spot_price_max' ] = spot_price_max
113+ params ['termination_time' ] = termination_time
107114 data = self .call_api ('projects/%s/devices' % project_id , type = 'POST' , params = params )
108115 return Device (data , self )
109116
@@ -173,3 +180,7 @@ def validate_capacity(self, servers):
173180 return False
174181 else :
175182 raise e
183+
184+ def get_spot_market_prices (self , params = {}):
185+ data = self .call_api ('/market/spot/prices' , params = params )
186+ return data ["spot_market_prices" ]
0 commit comments