func (d *driver) VolumeSnapshot( ctx types.Context, volumeID, snapshotName string, opts types.Store) (*types.Snapshot, error) { context.MustSession(ctx) v, err := d.getVolumeByID(volumeID) if err != nil { return nil, err } s := &types.Snapshot{ ID: d.newSnapshotID(v.ID), VolumeID: v.ID, VolumeSize: v.Size, Name: snapshotName, Status: "online", StartTime: time.Now().Unix(), Fields: v.Fields, } if customFields := opts.GetStore("opts"); customFields != nil { for _, k := range customFields.Keys() { s.Fields[k] = customFields.GetString(k) } } if err := d.writeSnapshot(s); err != nil { return nil, err } return s, nil }
func (d *driver) SnapshotCopy( ctx types.Context, snapshotID, snapshotName, destinationID string, opts types.Store) (*types.Snapshot, error) { context.MustSession(ctx) ogSnap, err := d.getSnapshotByID(snapshotID) if err != nil { return nil, err } newSnap := &types.Snapshot{ ID: d.newSnapshotID(ogSnap.VolumeID), VolumeID: ogSnap.VolumeID, VolumeSize: ogSnap.VolumeSize, Name: snapshotName, Status: "online", StartTime: time.Now().Unix(), Fields: ogSnap.Fields, } if customFields := opts.GetStore("opts"); customFields != nil { for _, k := range customFields.Keys() { newSnap.Fields[k] = customFields.GetString(k) } } if err := d.writeSnapshot(newSnap); err != nil { return nil, err } return newSnap, nil }
func (d *driver) VolumeCopy( ctx types.Context, volumeID, volumeName string, opts types.Store) (*types.Volume, error) { context.MustSession(ctx) ogVol, err := d.getVolumeByID(volumeID) if err != nil { return nil, err } newVol := &types.Volume{ ID: d.newVolumeID(), Name: volumeName, AvailabilityZone: ogVol.AvailabilityZone, IOPS: ogVol.IOPS, Size: ogVol.Size, Type: ogVol.Type, Fields: ogVol.Fields, } if customFields := opts.GetStore("opts"); customFields != nil { for _, k := range customFields.Keys() { newVol.Fields[k] = customFields.GetString(k) } } if err := d.writeVolume(newVol); err != nil { return nil, err } return newVol, nil }