mirror of https://github.com/ceph/go-ceph
cephfs admin: remove subvolumegroup snapshot support
Apparently, this feature is being removed from all active ceph versions and will not be present in future versions. Since we won't be able to test it any more, and the api is provisional still, we just remove it entirely. Signed-off-by: John Mulligan <jmulligan@redhat.com>
This commit is contained in:
parent
dbd5b9361c
commit
55821a9300
|
@ -103,59 +103,3 @@ func (fsa *FSAdmin) SubVolumeGroupPath(volume, name string) (string, error) {
|
||||||
}
|
}
|
||||||
return parsePathResponse(fsa.marshalMgrCommand(m))
|
return parsePathResponse(fsa.marshalMgrCommand(m))
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateSubVolumeGroupSnapshot creates a new snapshot from the source subvolume group.
|
|
||||||
//
|
|
||||||
// Similar To:
|
|
||||||
// ceph fs subvolumegroup snapshot create <volume> <group> <name>
|
|
||||||
func (fsa *FSAdmin) CreateSubVolumeGroupSnapshot(volume, group, name string) error {
|
|
||||||
m := map[string]string{
|
|
||||||
"prefix": "fs subvolumegroup snapshot create",
|
|
||||||
"vol_name": volume,
|
|
||||||
"group_name": group,
|
|
||||||
"snap_name": name,
|
|
||||||
"format": "json",
|
|
||||||
}
|
|
||||||
return fsa.marshalMgrCommand(m).noData().End()
|
|
||||||
}
|
|
||||||
|
|
||||||
// RemoveSubVolumeGroupSnapshot removes the specified snapshot from the subvolume group.
|
|
||||||
//
|
|
||||||
// Similar To:
|
|
||||||
// ceph fs subvolumegroup snapshot rm <volume> <group> <name>
|
|
||||||
func (fsa *FSAdmin) RemoveSubVolumeGroupSnapshot(volume, group, name string) error {
|
|
||||||
return fsa.rmSubVolumeGroupSnapshot(volume, group, name, rmFlags{})
|
|
||||||
}
|
|
||||||
|
|
||||||
// ForceRemoveSubVolumeGroupSnapshot removes the specified snapshot from the subvolume group.
|
|
||||||
//
|
|
||||||
// Similar To:
|
|
||||||
// ceph fs subvolumegroup snapshot rm <volume> <group> <name> --force
|
|
||||||
func (fsa *FSAdmin) ForceRemoveSubVolumeGroupSnapshot(volume, group, name string) error {
|
|
||||||
return fsa.rmSubVolumeGroupSnapshot(volume, group, name, rmFlags{force: true})
|
|
||||||
}
|
|
||||||
|
|
||||||
func (fsa *FSAdmin) rmSubVolumeGroupSnapshot(volume, group, name string, o rmFlags) error {
|
|
||||||
m := map[string]string{
|
|
||||||
"prefix": "fs subvolumegroup snapshot rm",
|
|
||||||
"vol_name": volume,
|
|
||||||
"group_name": group,
|
|
||||||
"snap_name": name,
|
|
||||||
"format": "json",
|
|
||||||
}
|
|
||||||
return fsa.marshalMgrCommand(o.Update(m)).noData().End()
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListSubVolumeGroupSnapshots returns a listing of snapshots for a given subvolume group.
|
|
||||||
//
|
|
||||||
// Similar To:
|
|
||||||
// ceph fs subvolumegroup snapshot ls <volume> <group>
|
|
||||||
func (fsa *FSAdmin) ListSubVolumeGroupSnapshots(volume, group string) ([]string, error) {
|
|
||||||
m := map[string]string{
|
|
||||||
"prefix": "fs subvolumegroup snapshot ls",
|
|
||||||
"vol_name": volume,
|
|
||||||
"group_name": group,
|
|
||||||
"format": "json",
|
|
||||||
}
|
|
||||||
return parseListNames(fsa.marshalMgrCommand(m))
|
|
||||||
}
|
|
||||||
|
|
|
@ -119,84 +119,3 @@ func TestSubVolumeGroupPath(t *testing.T) {
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
assert.Equal(t, "", path)
|
assert.Equal(t, "", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSubVolumeGroupSnapshots(t *testing.T) {
|
|
||||||
fsa := getFSAdmin(t)
|
|
||||||
volume := "cephfs"
|
|
||||||
group := "bathyscaphe"
|
|
||||||
subname := "trieste"
|
|
||||||
snapname1 := "ns1"
|
|
||||||
snapname2 := "ns2"
|
|
||||||
|
|
||||||
err := fsa.CreateSubVolumeGroup(volume, group, nil)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
defer func() {
|
|
||||||
err := fsa.RemoveSubVolumeGroup(volume, group)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
svopts := &SubVolumeOptions{
|
|
||||||
Mode: 0750,
|
|
||||||
Size: 20 * gibiByte,
|
|
||||||
}
|
|
||||||
err = fsa.CreateSubVolume(volume, group, subname, svopts)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
defer func() {
|
|
||||||
err := fsa.RemoveSubVolume(volume, group, subname)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
t.Run("createAndRemove", func(t *testing.T) {
|
|
||||||
err = fsa.CreateSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
err := fsa.RemoveSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("createAndForceRemove", func(t *testing.T) {
|
|
||||||
err = fsa.CreateSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
err := fsa.ForceRemoveSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("listOne", func(t *testing.T) {
|
|
||||||
err = fsa.CreateSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
defer func() {
|
|
||||||
err := fsa.RemoveSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
snaps, err := fsa.ListSubVolumeGroupSnapshots(volume, group)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Len(t, snaps, 1)
|
|
||||||
assert.Contains(t, snaps, snapname1)
|
|
||||||
})
|
|
||||||
|
|
||||||
t.Run("listTwo", func(t *testing.T) {
|
|
||||||
err = fsa.CreateSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
defer func() {
|
|
||||||
err := fsa.RemoveSubVolumeGroupSnapshot(volume, group, snapname1)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}()
|
|
||||||
err = fsa.CreateSubVolumeGroupSnapshot(volume, group, snapname2)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
defer func() {
|
|
||||||
err := fsa.RemoveSubVolumeGroupSnapshot(volume, group, snapname2)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
}()
|
|
||||||
|
|
||||||
snaps, err := fsa.ListSubVolumeGroupSnapshots(volume, group)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Len(t, snaps, 2)
|
|
||||||
assert.Contains(t, snaps, snapname1)
|
|
||||||
assert.Contains(t, snaps, snapname2)
|
|
||||||
|
|
||||||
// subvolumegroup snaps are reflected in subvolumes (with mangled names)
|
|
||||||
snaps, err = fsa.ListSubVolumeSnapshots(volume, group, subname)
|
|
||||||
assert.NoError(t, err)
|
|
||||||
assert.Len(t, snaps, 2)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue