func (d *Driver) CreateVolume(id string, opts map[string]string) error { d.mutex.Lock() defer d.mutex.Unlock() volumeName := opts[convoydriver.OPT_VOLUME_NAME] if volumeName == "" { volumeName = "volume-" + id[:8] } volume := d.blankVolume(id) exists, err := util.ObjectExists(volume) if err != nil { return err } if exists { return fmt.Errorf("volume %v already exists", id) } gVolume := d.gVolumes[d.DefaultVolumePool] volumePath := filepath.Join(gVolume.MountPoint, volumeName) if util.VolumeMountPointDirectoryExists(gVolume, volumeName) { log.Debugf("Found existing volume named %v, reuse it", volumeName) } else if err := util.VolumeMountPointDirectoryCreate(gVolume, volumeName); err != nil { return err } volume.Name = volumeName volume.Path = volumePath volume.VolumePool = gVolume.UUID return util.ObjectSave(volume) }
func (d *Driver) CreateVolume(id string, opts map[string]string) error { d.mutex.Lock() defer d.mutex.Unlock() volumeName := opts[convoydriver.OPT_VOLUME_NAME] if volumeName == "" { volumeName = "volume-" + id[:8] } volume := d.blankVolume(id) exists, err := util.ObjectExists(volume) if err != nil { return err } if exists { return fmt.Errorf("volume %v already exists", id) } volume.PrepareForVM, err = strconv.ParseBool(opts[convoydriver.OPT_PREPARE_FOR_VM]) if err != nil { return err } if volume.PrepareForVM { volume.Size, err = d.getSize(opts, d.DefaultVolumeSize) if err != nil { return err } } gVolume := d.gVolumes[d.DefaultVolumePool] volumePath := filepath.Join(gVolume.MountPoint, volumeName) if util.VolumeMountPointFileExists(gVolume, volumeName, util.FILE_TYPE_DIRECTORY) { log.Debugf("Found existing volume named %v, reuse it", volumeName) } else if err := util.VolumeMountPointDirectoryCreate(gVolume, volumeName); err != nil { return err } volume.Name = volumeName volume.Path = volumePath volume.VolumePool = gVolume.UUID return util.ObjectSave(volume) }
func (d *Driver) CreateVolume(req Request) error { d.mutex.Lock() defer d.mutex.Unlock() id := req.Name opts := req.Options volume := d.blankVolume(id) exists, err := util.ObjectExists(volume) if err != nil { return err } if exists { return fmt.Errorf("volume %v already exists", id) } volume.PrepareForVM, err = strconv.ParseBool(opts[OPT_PREPARE_FOR_VM]) if err != nil { return err } if volume.PrepareForVM { volume.Size, err = d.getSize(opts, d.DefaultVolumeSize) if err != nil { return err } } gVolume := d.gVolumes[d.DefaultVolumePool] volumePath := filepath.Join(gVolume.MountPoint, id) if util.VolumeMountPointFileExists(gVolume, id, util.FILE_TYPE_DIRECTORY) { log.Debugf("Found existing volume named %v, reuse it", id) } else if err := util.VolumeMountPointDirectoryCreate(gVolume, id); err != nil { return err } volume.Name = id volume.Path = volumePath volume.VolumePool = gVolume.UUID volume.CreatedTime = util.Now() return util.ObjectSave(volume) }