Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename from the StorageProvider to Storage #52

Merged
merged 1 commit into from
Jun 28, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions src/entity/storage_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,23 @@ import (
)

const (
StorageProviderCollectionName string = "storage_provider"
StorageCollectionName string = "storage"
)

type NFSStorageProvider struct {
type NFSStorageSetting struct {
IP string `bson:"ip" json:"ip"`
PATH string `bson:"path" json:"path"`
}

type StorageProvider struct {
ID bson.ObjectId `bson:"_id,omitempty" json:"id"`
Type string `bson:"type" json:"type"`
DisplayName string `bson:"displayName" json:"displayName"`
CreatedAt *time.Time `bson:"createdAt,omitempty" json:"createdAt,omitempty"`
NFSStorageProvider
type Storage struct {
ID bson.ObjectId `bson:"_id,omitempty" json:"id"`
Type string `bson:"type" json:"type"`
DisplayName string `bson:"displayName" json:"displayName"`
CreatedAt *time.Time `bson:"createdAt,omitempty" json:"createdAt,omitempty"`
NFSStorageSetting `bson:"nfs" json:"nfs"`
}

//GetCollection - get model mongo collection name.
func (m StorageProvider) GetCollection() string {
return StorageProviderCollectionName
func (m Storage) GetCollection() string {
return StorageCollectionName
}
14 changes: 7 additions & 7 deletions src/entity/volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ const (
So the Volume will create a PVC type and connect to a known StorageClass
*/
type Volume struct {
ID bson.ObjectId `bson:"_id,omitempty" json:"id"`
Name string `bson:"name" json:"name"`
StorageProviderName string `bson:"storageProviderName" json:"storageProviderName"`
AccessMode corev1.PersistentVolumeAccessMode `bson:"accessMode" json:"accessMode"`
Capacity string `bson:"capacity" json:"capacity"`
MetaName string `bson:"metaName" json:"metaName"` //For PVC metaname
CreatedAt *time.Time `bson:"createdAt,omitempty" json:"createdAt,omitempty"`
ID bson.ObjectId `bson:"_id,omitempty" json:"id"`
Name string `bson:"name" json:"name"`
StorageName string `bson:"storageProviderName" json:"storageProviderName"`
AccessMode corev1.PersistentVolumeAccessMode `bson:"accessMode" json:"accessMode"`
Capacity string `bson:"capacity" json:"capacity"`
MetaName string `bson:"metaName" json:"metaName"` //For PVC metaname
CreatedAt *time.Time `bson:"createdAt,omitempty" json:"createdAt,omitempty"`
}

//GetCollection - get model mongo collection name.
Expand Down
20 changes: 10 additions & 10 deletions src/server/handler_storage_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,26 +15,26 @@ import (
"gopkg.in/mgo.v2/bson"
)

func createStorageProvider(ctx *web.Context) {
func createStorage(ctx *web.Context) {
sp, req, resp := ctx.ServiceProvider, ctx.Request, ctx.Response

storageProvider := entity.StorageProvider{}
storageProvider := entity.Storage{}
if err := req.ReadEntity(&storageProvider); err != nil {
logger.Error(err)
response.BadRequest(req.Request, resp.ResponseWriter, err)
return
}

session := sp.Mongo.NewSession()
session.C(entity.StorageProviderCollectionName).EnsureIndex(mgo.Index{
session.C(entity.StorageCollectionName).EnsureIndex(mgo.Index{
Key: []string{"displayName"},
Unique: true,
})
defer session.Close()
// Check whether this displayname has been used
storageProvider.ID = bson.NewObjectId()
storageProvider.CreatedAt = timeutils.Now()
if err := session.Insert(entity.StorageProviderCollectionName, &storageProvider); err != nil {
if err := session.Insert(entity.StorageCollectionName, &storageProvider); err != nil {
if mgo.IsDup(err) {
response.Conflict(req.Request, resp.ResponseWriter, fmt.Errorf("Storage Provider Name: %s already existed", storageProvider.DisplayName))
} else {
Expand All @@ -49,7 +49,7 @@ func createStorageProvider(ctx *web.Context) {
})
}

func listStorageProvider(ctx *web.Context) {
func listStorage(ctx *web.Context) {
sp, req, resp := ctx.ServiceProvider, ctx.Request, ctx.Response

var pageSize = 10
Expand All @@ -69,9 +69,9 @@ func listStorageProvider(ctx *web.Context) {
session := sp.Mongo.NewSession()
defer session.Close()

storageProviders := []entity.StorageProvider{}
storageProviders := []entity.Storage{}

var c = session.C(entity.StorageProviderCollectionName)
var c = session.C(entity.StorageCollectionName)
var q *mgo.Query

selector := bson.M{}
Expand All @@ -86,7 +86,7 @@ func listStorageProvider(ctx *web.Context) {
return
}

count, err := session.Count(entity.StorageProviderCollectionName, bson.M{})
count, err := session.Count(entity.StorageCollectionName, bson.M{})
if err != nil {
logger.Error(err)
}
Expand All @@ -96,15 +96,15 @@ func listStorageProvider(ctx *web.Context) {
resp.WriteEntity(storageProviders)
}

func deleteStorageProvider(ctx *web.Context) {
func deleteStorage(ctx *web.Context) {
as, req, resp := ctx.ServiceProvider, ctx.Request, ctx.Response

id := req.PathParameter("id")

session := as.Mongo.NewSession()
defer session.Close()

if err := session.Remove(entity.StorageProviderCollectionName, "_id", bson.ObjectIdHex(id)); err != nil {
if err := session.Remove(entity.StorageCollectionName, "_id", bson.ObjectIdHex(id)); err != nil {
if mgo.ErrNotFound == err {
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
Expand Down
96 changes: 48 additions & 48 deletions src/server/handler_storage_provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,49 +23,49 @@ func init() {
rand.Seed(time.Now().UnixNano())
}

type StorageProviderTestSuite struct {
type StorageTestSuite struct {
suite.Suite
wc *restful.Container
storageProvider entity.NFSStorageProvider
session *mongo.Session
wc *restful.Container
storage entity.NFSStorageSetting
session *mongo.Session
}

func (suite *StorageProviderTestSuite) SetupSuite() {
func (suite *StorageTestSuite) SetupSuite() {
cf := config.MustRead("../../config/testing.json")
sp := serviceprovider.NewForTesting(cf)

//init restful container
suite.wc = restful.NewContainer()
service := newStorageProviderService(sp)
service := newStorageService(sp)
suite.wc.Add(service)

//init session
suite.session = sp.Mongo.NewSession()
}

func (suite *StorageProviderTestSuite) TearDownSuite() {
func (suite *StorageTestSuite) TearDownSuite() {
}

func TestStorageProviderSuite(t *testing.T) {
suite.Run(t, new(StorageProviderTestSuite))
func TestStorageSuite(t *testing.T) {
suite.Run(t, new(StorageTestSuite))
}

func (suite *StorageProviderTestSuite) TestCreateStorageProvider() {
func (suite *StorageTestSuite) TestCreateStorage() {
//Testing parameter
tName := namesgenerator.GetRandomName(0)
tType := "nfs"
tIP := "1.2.3.4"
tPath := "/exports"
storageProvider := entity.StorageProvider{
storage := entity.Storage{
Type: tType,
DisplayName: tName,
NFSStorageProvider: entity.NFSStorageProvider{
NFSStorageSetting: entity.NFSStorageSetting{
IP: tIP,
PATH: tPath,
},
}

bodyBytes, err := json.MarshalIndent(storageProvider, "", " ")
bodyBytes, err := json.MarshalIndent(storage, "", " ")
suite.NoError(err)

bodyReader := strings.NewReader(string(bodyBytes))
Expand All @@ -75,7 +75,7 @@ func (suite *StorageProviderTestSuite) TestCreateStorageProvider() {
httpRequest.Header.Add("Content-Type", "application/json")
httpWriter := httptest.NewRecorder()
suite.wc.Dispatch(httpWriter, httpRequest)
defer suite.session.Remove(entity.StorageProviderCollectionName, "displayName", tName)
defer suite.session.Remove(entity.StorageCollectionName, "displayName", tName)
assertResponseCode(suite.T(), http.StatusOK, httpWriter)
//Empty data
//We use the new write but empty input
Expand All @@ -92,64 +92,64 @@ func (suite *StorageProviderTestSuite) TestCreateStorageProvider() {
assertResponseCode(suite.T(), http.StatusConflict, httpWriter)
}

func (suite *StorageProviderTestSuite) TestDeleteStorageProvider() {
func (suite *StorageTestSuite) TestDeleteStorage() {
//Testing parameter
tName := namesgenerator.GetRandomName(0)
tType := "nfs"
tIP := "1.2.3.4"
tPath := "/exports"
storageProvider := entity.StorageProvider{
storage := entity.Storage{
ID: bson.NewObjectId(),
Type: tType,
DisplayName: tName,
NFSStorageProvider: entity.NFSStorageProvider{
NFSStorageSetting: entity.NFSStorageSetting{
IP: tIP,
PATH: tPath,
},
}

suite.session.C(entity.StorageProviderCollectionName).Insert(storageProvider)
defer suite.session.Remove(entity.StorageProviderCollectionName, "displayName", tName)
suite.session.C(entity.StorageCollectionName).Insert(storage)
defer suite.session.Remove(entity.StorageCollectionName, "displayName", tName)

bodyBytes, err := json.MarshalIndent(suite.storageProvider, "", " ")
bodyBytes, err := json.MarshalIndent(suite.storage, "", " ")
suite.NoError(err)

//Create again and it should fail since the name exist
bodyReader := strings.NewReader(string(bodyBytes))
httpRequest, err := http.NewRequest("DELETE", "http://localhost:7890/v1/storageprovider/"+storageProvider.ID.Hex(), bodyReader)
httpRequest, err := http.NewRequest("DELETE", "http://localhost:7890/v1/storageprovider/"+storage.ID.Hex(), bodyReader)
suite.NoError(err)
httpRequest.Header.Add("Content-Type", "application/json")
httpWriter := httptest.NewRecorder()
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusOK, httpWriter)
}

func (suite *StorageProviderTestSuite) TestInValidDeleteStorageProvider() {
func (suite *StorageTestSuite) TestInValidDeleteStorage() {
httpRequest, err := http.NewRequest("DELETE", "http://localhost:7890/v1/storageprovider/"+bson.NewObjectId().Hex(), nil)
suite.NoError(err)
httpWriter := httptest.NewRecorder()
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusNotFound, httpWriter)
}

func (suite *StorageProviderTestSuite) TestListStorageProvider() {
storageProviders := []entity.StorageProvider{}
func (suite *StorageTestSuite) TestListStorage() {
storages := []entity.Storage{}
for i := 0; i < 3; i++ {
storageProviders = append(storageProviders, entity.StorageProvider{
storages = append(storages, entity.Storage{
ID: bson.NewObjectId(),
DisplayName: namesgenerator.GetRandomName(0),
Type: "nfs",
NFSStorageProvider: entity.NFSStorageProvider{
NFSStorageSetting: entity.NFSStorageSetting{
IP: "1.2.3.4",
PATH: "/expots",
},
})
}

for _, v := range storageProviders {
err := suite.session.C(entity.StorageProviderCollectionName).Insert(v)
for _, v := range storages {
err := suite.session.C(entity.StorageCollectionName).Insert(v)
suite.NoError(err)
defer suite.session.Remove(entity.StorageProviderCollectionName, "_id", v.ID)
defer suite.session.Remove(entity.StorageCollectionName, "_id", v.ID)
}

//default page & page_size
Expand All @@ -160,16 +160,16 @@ func (suite *StorageProviderTestSuite) TestListStorageProvider() {
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusOK, httpWriter)

retStorageProviders := []entity.StorageProvider{}
err = json.Unmarshal(httpWriter.Body.Bytes(), &retStorageProviders)
retStorages := []entity.Storage{}
err = json.Unmarshal(httpWriter.Body.Bytes(), &retStorages)
suite.NoError(err)
suite.Equal(len(storageProviders), len(retStorageProviders))
for i, v := range retStorageProviders {
suite.Equal(storageProviders[i].ID, v.ID)
suite.Equal(storageProviders[i].DisplayName, v.DisplayName)
suite.Equal(storageProviders[i].Type, v.Type)
suite.Equal(storageProviders[i].IP, v.IP)
suite.Equal(storageProviders[i].PATH, v.PATH)
suite.Equal(len(storages), len(retStorages))
for i, v := range retStorages {
suite.Equal(storages[i].ID, v.ID)
suite.Equal(storages[i].DisplayName, v.DisplayName)
suite.Equal(storages[i].Type, v.Type)
suite.Equal(storages[i].IP, v.IP)
suite.Equal(storages[i].PATH, v.PATH)
}

httpRequest, err = http.NewRequest("GET", "http://localhost:7890/v1/storageprovider?page=1&page_size=30", nil)
Expand All @@ -179,20 +179,20 @@ func (suite *StorageProviderTestSuite) TestListStorageProvider() {
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusOK, httpWriter)

retStorageProviders = []entity.StorageProvider{}
err = json.Unmarshal(httpWriter.Body.Bytes(), &retStorageProviders)
retStorages = []entity.Storage{}
err = json.Unmarshal(httpWriter.Body.Bytes(), &retStorages)
suite.NoError(err)
suite.Equal(len(storageProviders), len(retStorageProviders))
for i, v := range retStorageProviders {
suite.Equal(storageProviders[i].ID, v.ID)
suite.Equal(storageProviders[i].DisplayName, v.DisplayName)
suite.Equal(storageProviders[i].Type, v.Type)
suite.Equal(storageProviders[i].IP, v.IP)
suite.Equal(storageProviders[i].PATH, v.PATH)
suite.Equal(len(storages), len(retStorages))
for i, v := range retStorages {
suite.Equal(storages[i].ID, v.ID)
suite.Equal(storages[i].DisplayName, v.DisplayName)
suite.Equal(storages[i].Type, v.Type)
suite.Equal(storages[i].IP, v.IP)
suite.Equal(storages[i].PATH, v.PATH)
}
}

func (suite *StorageProviderTestSuite) TestListInvalidStorageProvider() {
func (suite *StorageTestSuite) TestListInvalidStorage() {
//Invliad page size
httpRequest, err := http.NewRequest("GET", "http://localhost:7890/v1/storageprovider?page=0", nil)
suite.NoError(err)
Expand Down
4 changes: 2 additions & 2 deletions src/server/handler_volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ func createVolume(ctx *web.Context) {
defer session.Close()

// Check the storageClass is existed
couunt, err := session.Count(entity.StorageProviderCollectionName, bson.M{"displayName": volume.StorageProviderName})
couunt, err := session.Count(entity.StorageCollectionName, bson.M{"displayName": volume.StorageName})
if err != nil {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
} else if couunt < 1 {
response.BadRequest(req.Request, resp.ResponseWriter, fmt.Errorf("The reference storage provider %s doesn't exist", volume.StorageProviderName))
response.BadRequest(req.Request, resp.ResponseWriter, fmt.Errorf("The reference storage provider %s doesn't exist", volume.StorageName))
return
}

Expand Down
Loading