in instance.go [368:413]
func (i *Instance) populateDisks(w *Workflow) DError {
autonameIdx := 1
for di, d := range i.Disks {
d.Boot = di == 0
d.Mode = strOr(d.Mode, defaultDiskMode)
if diskURLRgx.MatchString(d.Source) {
d.Source = extendPartialURL(d.Source, i.Project)
}
p := d.InitializeParams
if p != nil {
// If name isn't set, set name to "instance-name", "instance-name-2", etc.
if p.DiskName == "" {
p.DiskName = i.Name
if autonameIdx > 1 {
p.DiskName = fmt.Sprintf("%s-%d", i.Name, autonameIdx)
}
autonameIdx++
}
if d.DeviceName == "" {
d.DeviceName = p.DiskName
}
// Extend SourceImage if short URL.
if imageURLRgx.MatchString(p.SourceImage) {
p.SourceImage = extendPartialURL(p.SourceImage, i.Project)
}
// Extend DiskType if short URL, or create extended URL.
p.DiskType = strOr(p.DiskType, defaultDiskType)
if diskTypeURLRgx.MatchString(p.DiskType) {
p.DiskType = extendPartialURL(p.DiskType, i.Project)
} else {
p.DiskType = fmt.Sprintf("projects/%s/zones/%s/diskTypes/%s", i.Project, i.Zone, p.DiskType)
}
parts := NamedSubexp(diskTypeURLRgx, p.DiskType)
if parts["disktype"] == "local-ssd" {
d.AutoDelete = true
d.Type = "SCRATCH"
p.DiskName = ""
}
} else if d.DeviceName == "" {
d.DeviceName = path.Base(d.Source)
}
}
return nil
}