}
}
- priority := compute.Regular
- evictionPolicy := compute.Deallocate
- var billingProfile compute.BillingProfile
- var maxPrice float64
- if instanceType.Preemptible {
- priority = compute.Spot
- evictionPolicy = compute.Delete
- // Setting maxPrice to -1 is the equivalent of paying spot price, up to the
- // normal price. This means the node will not be pre-empted for price
- // reasons. It may still be pre-empted for capacity reasons though. And
- // Azure offers *no* SLA on spot instances.
- maxPrice = -1
- billingProfile = compute.BillingProfile{MaxPrice: &maxPrice}
- }
-
vmParameters := compute.VirtualMachine{
Location: &az.azconfig.Location,
Tags: tags,
VMSize: compute.VirtualMachineSizeTypes(instanceType.ProviderType),
},
StorageProfile: storageProfile,
- Priority: priority,
- EvictionPolicy: evictionPolicy,
- BillingProfile: &billingProfile,
NetworkProfile: &compute.NetworkProfile{
NetworkInterfaces: &[]compute.NetworkInterfaceReference{
{
},
}
+ if instanceType.Preemptible {
+ // Setting maxPrice to -1 is the equivalent of paying spot price, up to the
+ // normal price. This means the node will not be pre-empted for price
+ // reasons. It may still be pre-empted for capacity reasons though. And
+ // Azure offers *no* SLA on spot instances.
+ var maxPrice float64 = -1
+ vmParameters.VirtualMachineProperties.Priority = compute.Spot
+ vmParameters.VirtualMachineProperties.EvictionPolicy = compute.Delete
+ vmParameters.VirtualMachineProperties.BillingProfile = &compute.BillingProfile{MaxPrice: &maxPrice}
+ }
+
vm, err := az.vmClient.createOrUpdate(az.ctx, az.azconfig.ResourceGroup, name, vmParameters)
if err != nil {
// Do some cleanup. Otherwise, an unbounded number of new unused nics and
}
}
+func (ai *azureInstance) PriceHistory(arvados.InstanceType) []cloud.InstancePrice {
+ return nil
+}
+
func (ai *azureInstance) RemoteUser() string {
return ai.provider.azconfig.AdminUsername
}