func (m *manager) Create( jobName string, id int, deploymentManifest bideplmanifest.Manifest, cloudStemcell bistemcell.CloudStemcell, registryConfig biinstallmanifest.Registry, eventLoggerStage biui.Stage, ) (Instance, []bidisk.Disk, error) { var vm bivm.VM stepName := fmt.Sprintf("Creating VM for instance '%s/%d' from stemcell '%s'", jobName, id, cloudStemcell.CID()) err := eventLoggerStage.Perform(stepName, func() error { var err error vm, err = m.vmManager.Create(cloudStemcell, deploymentManifest) if err != nil { return bosherr.WrapError(err, "Creating VM") } if err = cloudStemcell.PromoteAsCurrent(); err != nil { return bosherr.WrapErrorf(err, "Promoting stemcell as current '%s'", cloudStemcell.CID()) } return nil }) if err != nil { return nil, []bidisk.Disk{}, err } instance := m.instanceFactory.NewInstance(jobName, id, vm, m.vmManager, m.sshTunnelFactory, m.blobstore, m.logger) if err := instance.WaitUntilReady(registryConfig, eventLoggerStage); err != nil { return instance, []bidisk.Disk{}, bosherr.WrapError(err, "Waiting until instance is ready") } disks, err := instance.UpdateDisks(deploymentManifest, eventLoggerStage) if err != nil { return instance, disks, bosherr.WrapError(err, "Updating instance disks") } return instance, disks, err }