// getDisks builds the raw spec for the disks that should be attached to // the new instances and returns it. This will always include a root // disk with characteristics determined by the provides args and // constraints. func getDisks(spec *instances.InstanceSpec, cons constraints.Value, ser, eUUID string) ([]google.DiskSpec, error) { size := common.MinRootDiskSizeGiB(ser) if cons.RootDisk != nil && *cons.RootDisk > size { size = common.MiBToGiB(*cons.RootDisk) } var imageURL string os, err := series.GetOSFromSeries(ser) if err != nil { return nil, errors.Trace(err) } switch os { case jujuos.Ubuntu: imageURL = ubuntuImageBasePath case jujuos.Windows: imageURL = windowsImageBasePath default: return nil, errors.Errorf("os %s is not supported on the gce provider", os.String()) } dSpec := google.DiskSpec{ Series: ser, SizeHintGB: size, ImageURL: imageURL + spec.Image.Id, Boot: true, AutoDelete: true, Description: eUUID, } if cons.RootDisk != nil && dSpec.TooSmall() { msg := "Ignoring root-disk constraint of %dM because it is smaller than the GCE image size of %dG" logger.Infof(msg, *cons.RootDisk, google.MinDiskSizeGB(ser)) } return []google.DiskSpec{dSpec}, nil }
// getDisks builds the raw spec for the disks that should be attached to // the new instances and returns it. This will always include a root // disk with characteristics determined by the provides args and // constraints. func getDisks(spec *instances.InstanceSpec, cons constraints.Value) []google.DiskSpec { size := common.MinRootDiskSizeGiB if cons.RootDisk != nil && *cons.RootDisk > size { size = common.MiBToGiB(*cons.RootDisk) } dSpec := google.DiskSpec{ SizeHintGB: size, ImageURL: imageBasePath + spec.Image.Id, Boot: true, AutoDelete: true, } if cons.RootDisk != nil && dSpec.TooSmall() { msg := "Ignoring root-disk constraint of %dM because it is smaller than the GCE image size of %dG" logger.Infof(msg, *cons.RootDisk, google.MinDiskSizeGB) } return []google.DiskSpec{dSpec} }
// mibToGB converts the value in MiB to GB. // Juju works in MiB, MAAS expects GB. func mibToGb(m uint64) uint64 { return common.MiBToGiB(m) * (humanize.GiByte / humanize.GByte) }