github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/storage/provider/dummy/volumesource.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package dummy 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/testing" 9 10 "github.com/juju/juju/storage" 11 ) 12 13 // VolumeSource is an implementation of storage.VolumeSource, suitable for 14 // testing. Each method's default behaviour may be overridden by setting 15 // the corresponding Func field. 16 type VolumeSource struct { 17 testing.Stub 18 19 CreateVolumesFunc func([]storage.VolumeParams) ([]storage.CreateVolumesResult, error) 20 ListVolumesFunc func() ([]string, error) 21 DescribeVolumesFunc func([]string) ([]storage.DescribeVolumesResult, error) 22 DestroyVolumesFunc func([]string) ([]error, error) 23 ValidateVolumeParamsFunc func(storage.VolumeParams) error 24 AttachVolumesFunc func([]storage.VolumeAttachmentParams) ([]storage.AttachVolumesResult, error) 25 DetachVolumesFunc func([]storage.VolumeAttachmentParams) ([]error, error) 26 } 27 28 // CreateVolumes is defined on storage.VolumeSource. 29 func (s *VolumeSource) CreateVolumes(params []storage.VolumeParams) ([]storage.CreateVolumesResult, error) { 30 s.MethodCall(s, "CreateVolumes", params) 31 if s.CreateVolumesFunc != nil { 32 return s.CreateVolumesFunc(params) 33 } 34 return nil, errors.NotImplementedf("CreateVolumes") 35 } 36 37 // ListVolumes is defined on storage.VolumeSource. 38 func (s *VolumeSource) ListVolumes() ([]string, error) { 39 s.MethodCall(s, "ListVolumes") 40 if s.ListVolumesFunc != nil { 41 return s.ListVolumesFunc() 42 } 43 return nil, nil 44 } 45 46 // DescribeVolumes is defined on storage.VolumeSource. 47 func (s *VolumeSource) DescribeVolumes(volIds []string) ([]storage.DescribeVolumesResult, error) { 48 s.MethodCall(s, "DescribeVolumes", volIds) 49 if s.DescribeVolumesFunc != nil { 50 return s.DescribeVolumesFunc(volIds) 51 } 52 return nil, errors.NotImplementedf("DescribeVolumes") 53 } 54 55 // DestroyVolumes is defined on storage.VolumeSource. 56 func (s *VolumeSource) DestroyVolumes(volIds []string) ([]error, error) { 57 s.MethodCall(s, "DestroyVolumes", volIds) 58 if s.DestroyVolumesFunc != nil { 59 return s.DestroyVolumesFunc(volIds) 60 } 61 return nil, errors.NotImplementedf("DestroyVolumes") 62 } 63 64 // ValidateVolumeParams is defined on storage.VolumeSource. 65 func (s *VolumeSource) ValidateVolumeParams(params storage.VolumeParams) error { 66 s.MethodCall(s, "ValidateVolumeParams", params) 67 if s.ValidateVolumeParamsFunc != nil { 68 return s.ValidateVolumeParamsFunc(params) 69 } 70 return nil 71 } 72 73 // AttachVolumes is defined on storage.VolumeSource. 74 func (s *VolumeSource) AttachVolumes(params []storage.VolumeAttachmentParams) ([]storage.AttachVolumesResult, error) { 75 s.MethodCall(s, "AttachVolumes", params) 76 if s.AttachVolumesFunc != nil { 77 return s.AttachVolumesFunc(params) 78 } 79 return nil, errors.NotImplementedf("AttachVolumes") 80 } 81 82 // DetachVolumes is defined on storage.VolumeSource. 83 func (s *VolumeSource) DetachVolumes(params []storage.VolumeAttachmentParams) ([]error, error) { 84 s.MethodCall(s, "DetachVolumes", params) 85 if s.DetachVolumesFunc != nil { 86 return s.DetachVolumesFunc(params) 87 } 88 return nil, errors.NotImplementedf("DetachVolumes") 89 }