@@ -11,17 +11,19 @@ import (
1111
1212// StorageProvider is an implementor of the StorageProvider interface
1313type StorageProvider struct {
14- volumes map [string ]model.Volume
15- snapshots map [string ]model.Snapshot
16- volumeGroups map [string ]model.VolumeGroup
14+ volumes map [string ]model.Volume
15+ snapshots map [string ]model.Snapshot
16+ volumeGroups map [string ]model.VolumeGroup
17+ snapshotGroups map [string ]model.SnapshotGroup
1718}
1819
1920// NewFakeStorageProvider returns a fake storage provider
2021func NewFakeStorageProvider () * StorageProvider {
2122 return & StorageProvider {
22- volumes : make (map [string ]model.Volume ),
23- snapshots : make (map [string ]model.Snapshot ),
24- volumeGroups : make (map [string ]model.VolumeGroup ),
23+ volumes : make (map [string ]model.Volume ),
24+ snapshots : make (map [string ]model.Snapshot ),
25+ volumeGroups : make (map [string ]model.VolumeGroup ),
26+ snapshotGroups : make (map [string ]model.SnapshotGroup ),
2527 }
2628}
2729
@@ -55,7 +57,7 @@ func (provider *StorageProvider) CreateVolume(name, description string, size int
5557 return & fakeVolume , nil
5658}
5759
58- // CreateVolume returns a fake volume group
60+ // CreateVolumeGroup returns a fake volume group
5961func (provider * StorageProvider ) CreateVolumeGroup (name , description string , opts map [string ]interface {}) (* model.VolumeGroup , error ) {
6062 if _ , ok := provider .volumeGroups [name ]; ok {
6163 return nil , fmt .Errorf ("Volume Group named %s already exists" , name )
@@ -69,6 +71,20 @@ func (provider *StorageProvider) CreateVolumeGroup(name, description string, opt
6971 return & fakeVolumeGroup , nil
7072}
7173
74+ // CreateSnapshotGroup returns a fake volume group
75+ func (provider * StorageProvider ) CreateSnapshotGroup (name , sourceVolumeGroupID string ) (* model.SnapshotGroup , error ) {
76+ if _ , ok := provider .snapshotGroups [name ]; ok {
77+ return nil , fmt .Errorf ("Snapshot Group named %s already exists" , name )
78+ }
79+ fakeSnapshotGroup := model.SnapshotGroup {
80+ ID : name ,
81+ Name : name ,
82+ SourceVolumeGroupID : sourceVolumeGroupID ,
83+ }
84+ provider .snapshotGroups [name ] = fakeSnapshotGroup
85+ return & fakeSnapshotGroup , nil
86+ }
87+
7288// CloneVolume returns a fake volume
7389func (provider * StorageProvider ) CloneVolume (name , description , sourceID , snapshotID string , size int64 , opts map [string ]interface {}) (* model.Volume , error ) {
7490 if _ , ok := provider .volumes [name ]; ok {
@@ -125,6 +141,15 @@ func (provider *StorageProvider) DeleteVolumeGroup(id string) error {
125141 return fmt .Errorf ("Could not find volume group with id %s" , id )
126142}
127143
144+ // DeleteSnapshotGroup removes a fake snapshotGroup
145+ func (provider * StorageProvider ) DeleteSnapshotGroup (id string ) error {
146+ if _ , ok := provider .snapshotGroups [id ]; ok {
147+ delete (provider .snapshotGroups , id )
148+ return nil
149+ }
150+ return fmt .Errorf ("Could not find snapshot group with id %s" , id )
151+ }
152+
128153// PublishVolume returns fake publish data
129154func (provider * StorageProvider ) PublishVolume (id , hostUUID , accessProtocol string ) (* model.PublishInfo , error ) {
130155 return & model.PublishInfo {
0 commit comments