Loading cmd/s3driver/main.go +2 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import ( "log" "os" "github.com/ctrox/csi-s3/pkg/s3" "github.com/ctrox/csi-s3/pkg/driver" ) func init() { Loading @@ -36,7 +36,7 @@ var ( func main() { flag.Parse() driver, err := s3.NewS3(*nodeID, *endpoint) driver, err := driver.New(*nodeID, *endpoint) if err != nil { log.Fatal(err) } Loading pkg/s3/controllerserver.go→pkg/driver/controllerserver.go +24 −18 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ package s3 package driver import ( "crypto/sha1" Loading @@ -23,6 +23,8 @@ import ( "io" "strings" "github.com/ctrox/csi-s3/pkg/mounter" "github.com/ctrox/csi-s3/pkg/s3" "github.com/golang/glog" "golang.org/x/net/context" "google.golang.org/grpc/codes" Loading @@ -36,11 +38,15 @@ type controllerServer struct { *csicommon.DefaultControllerServer } const ( defaultFsPrefix = "csi-fs" ) func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) { params := req.GetParameters() volumeID := sanitizeVolumeID(req.GetName()) if bucketName, bucketExists := params[bucketKey]; bucketExists { if bucketName, bucketExists := params[mounter.BucketKey]; bucketExists { volumeID = sanitizeVolumeID(bucketName) } Loading @@ -59,24 +65,24 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol capacityBytes := int64(req.GetCapacityRange().GetRequiredBytes()) mounter := params[mounterTypeKey] mounter := params[mounter.TypeKey] glog.V(4).Infof("Got a request to create volume %s", volumeID) s3, err := newS3ClientFromSecrets(req.GetSecrets()) client, err := s3.NewClientFromSecret(req.GetSecrets()) if err != nil { return nil, fmt.Errorf("failed to initialize S3 client: %s", err) } exists, err := s3.bucketExists(volumeID) exists, err := client.BucketExists(volumeID) if err != nil { return nil, fmt.Errorf("failed to check if bucket %s exists: %v", volumeID, err) } var b *bucket var b *s3.Bucket if exists { b, err = s3.getBucket(volumeID) b, err = client.GetBucket(volumeID) if err != nil { glog.Warningf("Bucket %s exists, but failed to get its metadata: %v", volumeID, err) b = &bucket{ b = &s3.Bucket{ Name: volumeID, Mounter: mounter, CapacityBytes: capacityBytes, Loading @@ -91,13 +97,13 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol b.Mounter = mounter } } else { if err = s3.createBucket(volumeID); err != nil { if err = client.CreateBucket(volumeID); err != nil { return nil, fmt.Errorf("failed to create volume %s: %v", volumeID, err) } if err = s3.createPrefix(volumeID, defaultFsPrefix); err != nil { if err = client.CreatePrefix(volumeID, defaultFsPrefix); err != nil { return nil, fmt.Errorf("failed to create prefix %s: %v", defaultFsPrefix, err) } b = &bucket{ b = &s3.Bucket{ Name: volumeID, Mounter: mounter, CapacityBytes: capacityBytes, Loading @@ -105,7 +111,7 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol CreatedByCsi: !exists, } } if err := s3.setBucket(b); err != nil { if err := client.SetBucket(b); err != nil { return nil, fmt.Errorf("Error setting bucket metadata: %v", err) } Loading Loading @@ -136,21 +142,21 @@ func (cs *controllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVol } glog.V(4).Infof("Deleting volume %s", volumeID) s3, err := newS3ClientFromSecrets(req.GetSecrets()) client, err := s3.NewClientFromSecret(req.GetSecrets()) if err != nil { return nil, fmt.Errorf("failed to initialize S3 client: %s", err) } exists, err := s3.bucketExists(volumeID) exists, err := client.BucketExists(volumeID) if err != nil { return nil, err } if exists { b, err := s3.getBucket(volumeID) b, err := client.GetBucket(volumeID) if err != nil { return nil, fmt.Errorf("Failed to get metadata of buckect %s", volumeID) } if b.CreatedByCsi { if err := s3.removeBucket(volumeID); err != nil { if err := client.RemoveBucket(volumeID); err != nil { glog.V(3).Infof("Failed to remove volume %s: %v", volumeID, err) return nil, err } Loading @@ -175,11 +181,11 @@ func (cs *controllerServer) ValidateVolumeCapabilities(ctx context.Context, req return nil, status.Error(codes.InvalidArgument, "Volume capabilities missing in request") } s3, err := newS3ClientFromSecrets(req.GetSecrets()) s3, err := s3.NewClientFromSecret(req.GetSecrets()) if err != nil { return nil, fmt.Errorf("failed to initialize S3 client: %s", err) } exists, err := s3.bucketExists(req.GetVolumeId()) exists, err := s3.BucketExists(req.GetVolumeId()) if err != nil { return nil, err } Loading pkg/s3/s3-driver.go→pkg/driver/driver.go +12 −12 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ package s3 package driver import ( "github.com/container-storage-interface/spec/lib/go/csi" Loading @@ -23,7 +23,7 @@ import ( csicommon "github.com/kubernetes-csi/drivers/pkg/csi-common" ) type s3 struct { type driver struct { driver *csicommon.CSIDriver endpoint string Loading @@ -44,39 +44,39 @@ var ( driverName = "ch.ctrox.csi.s3-driver" ) // NewS3 initializes the driver func NewS3(nodeID string, endpoint string) (*s3, error) { driver := csicommon.NewCSIDriver(driverName, vendorVersion, nodeID) if driver == nil { // New initializes the driver func New(nodeID string, endpoint string) (*driver, error) { d := csicommon.NewCSIDriver(driverName, vendorVersion, nodeID) if d == nil { glog.Fatalln("Failed to initialize CSI Driver.") } s3Driver := &s3{ s3Driver := &driver{ endpoint: endpoint, driver: driver, driver: d, } return s3Driver, nil } func (s3 *s3) newIdentityServer(d *csicommon.CSIDriver) *identityServer { func (s3 *driver) newIdentityServer(d *csicommon.CSIDriver) *identityServer { return &identityServer{ DefaultIdentityServer: csicommon.NewDefaultIdentityServer(d), } } func (s3 *s3) newControllerServer(d *csicommon.CSIDriver) *controllerServer { func (s3 *driver) newControllerServer(d *csicommon.CSIDriver) *controllerServer { return &controllerServer{ DefaultControllerServer: csicommon.NewDefaultControllerServer(d), } } func (s3 *s3) newNodeServer(d *csicommon.CSIDriver) *nodeServer { func (s3 *driver) newNodeServer(d *csicommon.CSIDriver) *nodeServer { return &nodeServer{ DefaultNodeServer: csicommon.NewDefaultNodeServer(d), } } func (s3 *s3) Run() { func (s3 *driver) Run() { glog.Infof("Driver: %v ", driverName) glog.Infof("Version: %v ", vendorVersion) // Initialize default library driver Loading pkg/s3/s3-driver_suite_test.go→pkg/driver/driver_suite_test.go +8 −7 Original line number Diff line number Diff line package s3_test package driver_test import ( "log" "os" "github.com/ctrox/csi-s3/pkg/s3" "github.com/ctrox/csi-s3/pkg/driver" "github.com/ctrox/csi-s3/pkg/mounter" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" Loading @@ -19,7 +20,7 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } driver, err := s3.NewS3("test-node", csiEndpoint) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading @@ -45,7 +46,7 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } driver, err := s3.NewS3("test-node", csiEndpoint) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading Loading @@ -73,8 +74,8 @@ var _ = Describe("S3Driver", func() { Expect(err).NotTo(HaveOccurred()) } // Clear loop device so we cover the creation of it os.Remove(s3.S3backerLoopDevice) driver, err := s3.NewS3("test-node", csiEndpoint) os.Remove(mounter.S3backerLoopDevice) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading @@ -101,7 +102,7 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } driver, err := s3.NewS3("test-node", csiEndpoint) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading pkg/s3/s3-driver_test.go→pkg/driver/driver_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ package s3 package driver_test import ( "testing" Loading Loading
cmd/s3driver/main.go +2 −2 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import ( "log" "os" "github.com/ctrox/csi-s3/pkg/s3" "github.com/ctrox/csi-s3/pkg/driver" ) func init() { Loading @@ -36,7 +36,7 @@ var ( func main() { flag.Parse() driver, err := s3.NewS3(*nodeID, *endpoint) driver, err := driver.New(*nodeID, *endpoint) if err != nil { log.Fatal(err) } Loading
pkg/s3/controllerserver.go→pkg/driver/controllerserver.go +24 −18 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ package s3 package driver import ( "crypto/sha1" Loading @@ -23,6 +23,8 @@ import ( "io" "strings" "github.com/ctrox/csi-s3/pkg/mounter" "github.com/ctrox/csi-s3/pkg/s3" "github.com/golang/glog" "golang.org/x/net/context" "google.golang.org/grpc/codes" Loading @@ -36,11 +38,15 @@ type controllerServer struct { *csicommon.DefaultControllerServer } const ( defaultFsPrefix = "csi-fs" ) func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVolumeRequest) (*csi.CreateVolumeResponse, error) { params := req.GetParameters() volumeID := sanitizeVolumeID(req.GetName()) if bucketName, bucketExists := params[bucketKey]; bucketExists { if bucketName, bucketExists := params[mounter.BucketKey]; bucketExists { volumeID = sanitizeVolumeID(bucketName) } Loading @@ -59,24 +65,24 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol capacityBytes := int64(req.GetCapacityRange().GetRequiredBytes()) mounter := params[mounterTypeKey] mounter := params[mounter.TypeKey] glog.V(4).Infof("Got a request to create volume %s", volumeID) s3, err := newS3ClientFromSecrets(req.GetSecrets()) client, err := s3.NewClientFromSecret(req.GetSecrets()) if err != nil { return nil, fmt.Errorf("failed to initialize S3 client: %s", err) } exists, err := s3.bucketExists(volumeID) exists, err := client.BucketExists(volumeID) if err != nil { return nil, fmt.Errorf("failed to check if bucket %s exists: %v", volumeID, err) } var b *bucket var b *s3.Bucket if exists { b, err = s3.getBucket(volumeID) b, err = client.GetBucket(volumeID) if err != nil { glog.Warningf("Bucket %s exists, but failed to get its metadata: %v", volumeID, err) b = &bucket{ b = &s3.Bucket{ Name: volumeID, Mounter: mounter, CapacityBytes: capacityBytes, Loading @@ -91,13 +97,13 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol b.Mounter = mounter } } else { if err = s3.createBucket(volumeID); err != nil { if err = client.CreateBucket(volumeID); err != nil { return nil, fmt.Errorf("failed to create volume %s: %v", volumeID, err) } if err = s3.createPrefix(volumeID, defaultFsPrefix); err != nil { if err = client.CreatePrefix(volumeID, defaultFsPrefix); err != nil { return nil, fmt.Errorf("failed to create prefix %s: %v", defaultFsPrefix, err) } b = &bucket{ b = &s3.Bucket{ Name: volumeID, Mounter: mounter, CapacityBytes: capacityBytes, Loading @@ -105,7 +111,7 @@ func (cs *controllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol CreatedByCsi: !exists, } } if err := s3.setBucket(b); err != nil { if err := client.SetBucket(b); err != nil { return nil, fmt.Errorf("Error setting bucket metadata: %v", err) } Loading Loading @@ -136,21 +142,21 @@ func (cs *controllerServer) DeleteVolume(ctx context.Context, req *csi.DeleteVol } glog.V(4).Infof("Deleting volume %s", volumeID) s3, err := newS3ClientFromSecrets(req.GetSecrets()) client, err := s3.NewClientFromSecret(req.GetSecrets()) if err != nil { return nil, fmt.Errorf("failed to initialize S3 client: %s", err) } exists, err := s3.bucketExists(volumeID) exists, err := client.BucketExists(volumeID) if err != nil { return nil, err } if exists { b, err := s3.getBucket(volumeID) b, err := client.GetBucket(volumeID) if err != nil { return nil, fmt.Errorf("Failed to get metadata of buckect %s", volumeID) } if b.CreatedByCsi { if err := s3.removeBucket(volumeID); err != nil { if err := client.RemoveBucket(volumeID); err != nil { glog.V(3).Infof("Failed to remove volume %s: %v", volumeID, err) return nil, err } Loading @@ -175,11 +181,11 @@ func (cs *controllerServer) ValidateVolumeCapabilities(ctx context.Context, req return nil, status.Error(codes.InvalidArgument, "Volume capabilities missing in request") } s3, err := newS3ClientFromSecrets(req.GetSecrets()) s3, err := s3.NewClientFromSecret(req.GetSecrets()) if err != nil { return nil, fmt.Errorf("failed to initialize S3 client: %s", err) } exists, err := s3.bucketExists(req.GetVolumeId()) exists, err := s3.BucketExists(req.GetVolumeId()) if err != nil { return nil, err } Loading
pkg/s3/s3-driver.go→pkg/driver/driver.go +12 −12 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ package s3 package driver import ( "github.com/container-storage-interface/spec/lib/go/csi" Loading @@ -23,7 +23,7 @@ import ( csicommon "github.com/kubernetes-csi/drivers/pkg/csi-common" ) type s3 struct { type driver struct { driver *csicommon.CSIDriver endpoint string Loading @@ -44,39 +44,39 @@ var ( driverName = "ch.ctrox.csi.s3-driver" ) // NewS3 initializes the driver func NewS3(nodeID string, endpoint string) (*s3, error) { driver := csicommon.NewCSIDriver(driverName, vendorVersion, nodeID) if driver == nil { // New initializes the driver func New(nodeID string, endpoint string) (*driver, error) { d := csicommon.NewCSIDriver(driverName, vendorVersion, nodeID) if d == nil { glog.Fatalln("Failed to initialize CSI Driver.") } s3Driver := &s3{ s3Driver := &driver{ endpoint: endpoint, driver: driver, driver: d, } return s3Driver, nil } func (s3 *s3) newIdentityServer(d *csicommon.CSIDriver) *identityServer { func (s3 *driver) newIdentityServer(d *csicommon.CSIDriver) *identityServer { return &identityServer{ DefaultIdentityServer: csicommon.NewDefaultIdentityServer(d), } } func (s3 *s3) newControllerServer(d *csicommon.CSIDriver) *controllerServer { func (s3 *driver) newControllerServer(d *csicommon.CSIDriver) *controllerServer { return &controllerServer{ DefaultControllerServer: csicommon.NewDefaultControllerServer(d), } } func (s3 *s3) newNodeServer(d *csicommon.CSIDriver) *nodeServer { func (s3 *driver) newNodeServer(d *csicommon.CSIDriver) *nodeServer { return &nodeServer{ DefaultNodeServer: csicommon.NewDefaultNodeServer(d), } } func (s3 *s3) Run() { func (s3 *driver) Run() { glog.Infof("Driver: %v ", driverName) glog.Infof("Version: %v ", vendorVersion) // Initialize default library driver Loading
pkg/s3/s3-driver_suite_test.go→pkg/driver/driver_suite_test.go +8 −7 Original line number Diff line number Diff line package s3_test package driver_test import ( "log" "os" "github.com/ctrox/csi-s3/pkg/s3" "github.com/ctrox/csi-s3/pkg/driver" "github.com/ctrox/csi-s3/pkg/mounter" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" Loading @@ -19,7 +20,7 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } driver, err := s3.NewS3("test-node", csiEndpoint) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading @@ -45,7 +46,7 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } driver, err := s3.NewS3("test-node", csiEndpoint) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading Loading @@ -73,8 +74,8 @@ var _ = Describe("S3Driver", func() { Expect(err).NotTo(HaveOccurred()) } // Clear loop device so we cover the creation of it os.Remove(s3.S3backerLoopDevice) driver, err := s3.NewS3("test-node", csiEndpoint) os.Remove(mounter.S3backerLoopDevice) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading @@ -101,7 +102,7 @@ var _ = Describe("S3Driver", func() { if err := os.Remove(socket); err != nil && !os.IsNotExist(err) { Expect(err).NotTo(HaveOccurred()) } driver, err := s3.NewS3("test-node", csiEndpoint) driver, err := driver.New("test-node", csiEndpoint) if err != nil { log.Fatal(err) } Loading
pkg/s3/s3-driver_test.go→pkg/driver/driver_test.go +1 −1 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ package s3 package driver_test import ( "testing" Loading