Skip to content

Commit

Permalink
Merge pull request #65 from linkernetworks/hwchiu/VX-121
Browse files Browse the repository at this point in the history
Create a deployment for storage.

Former-commit-id: 4160895f760ba022715127db78eb513468a54f03 [formerly ea5afb5]
Former-commit-id: 133bc70640047dd025bacf7aa9cf04e80aaa9eed
  • Loading branch information
Hung-Wei Chiu authored Jul 6, 2018
2 parents 00b8c79 + efdd515 commit 9f3fbbc
Show file tree
Hide file tree
Showing 11 changed files with 285 additions and 55 deletions.
4 changes: 2 additions & 2 deletions src/entity/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ type Storage struct {
Type StorageType `bson:"type" json:"type"`
Name string `bson:"name" json:"name"`
CreatedAt *time.Time `bson:"createdAt,omitempty" json:"createdAt,omitempty"`
NFS NFSStorage `bson:"nfs" json:"nfs"`
Fake FakeStorage `json:"fake"` //FakeNetwork, for restful testing.
NFS *NFSStorage `bson:"nfs,omitempty" json:"nfs,omitempty"`
Fake *FakeStorage `bson:"fake,omitempty" json:"fake,omitempty"` //FakeStorage, for restful testing.
}

//GetCollection - get model mongo collection name.
Expand Down
4 changes: 4 additions & 0 deletions src/kubernetes/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@ func (kc *KubeCtl) CreateDeployment(deployment *appsv1.Deployment) (*appsv1.Depl
func (kc *KubeCtl) GetDeployment(name string) (*appsv1.Deployment, error) {
return kc.Clientset.AppsV1().Deployments(kc.Namespace).Get(name, metav1.GetOptions{})
}

func (kc *KubeCtl) DeleteDeployment(name string) error {
return kc.Clientset.AppsV1().Deployments(kc.Namespace).Delete(name, &metav1.DeleteOptions{})
}
28 changes: 28 additions & 0 deletions src/kubernetes/deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,29 @@ func (suite *KubeCtlDeploymentTestSuite) SetupSuite() {

func (suite *KubeCtlDeploymentTestSuite) TearDownSuite() {}
func (suite *KubeCtlDeploymentTestSuite) TestCreateDeployment() {
var replicas int32
replicas = 3
name := namesgenerator.GetRandomName(0)
deployment := appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: name,
},
Spec: appsv1.DeploymentSpec{
Replicas: &replicas,
},
Status: appsv1.DeploymentStatus{},
}
ret, err := suite.kubectl.CreateDeployment(&deployment)
suite.NoError(err)
suite.NotNil(ret)

deploy, err := suite.kubectl.GetDeployment(name)
suite.NoError(err)
suite.NotNil(deploy)
suite.Equal(replicas, *deploy.Spec.Replicas)
}

func (suite *KubeCtlDeploymentTestSuite) TestDeleteDeployment() {
var replicas int32
replicas = 3
name := namesgenerator.GetRandomName(0)
Expand All @@ -52,6 +74,12 @@ func (suite *KubeCtlDeploymentTestSuite) TestCreateDeployment() {
suite.NoError(err)
suite.NotNil(deploy)
suite.Equal(replicas, *deploy.Spec.Replicas)

err = suite.kubectl.DeleteDeployment(name)
suite.NoError(err)
deploy, err = suite.kubectl.GetDeployment(name)
suite.Error(err)
suite.Nil(deploy)
}

func TestDeploymentTestSuite(t *testing.T) {
Expand Down
14 changes: 7 additions & 7 deletions src/server/handler_storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,32 +26,32 @@ func createStorage(ctx *web.Context) {
return
}

storage.ID = bson.NewObjectId()
storage.CreatedAt = timeutils.Now()

session := sp.Mongo.NewSession()
session.C(entity.StorageCollectionName).EnsureIndex(mgo.Index{
Key: []string{"name"},
Unique: true,
})
defer session.Close()
// Check whether this displayname has been used

// Check whether this name has been used
storageProvider, err := storageprovider.GetStorageProvider(&storage)
if err != nil {
response.BadRequest(req.Request, resp.ResponseWriter, err)
return
}

if err := storageProvider.ValidateBeforeCreating(sp, storage); err != nil {
if err := storageProvider.ValidateBeforeCreating(sp, &storage); err != nil {
response.BadRequest(req.Request, resp.ResponseWriter, err)
return
}

if err := storageProvider.CreateStorage(sp, storage); err != nil {
if err := storageProvider.CreateStorage(sp, &storage); err != nil {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}

storage.ID = bson.NewObjectId()
storage.CreatedAt = timeutils.Now()
if err := session.Insert(entity.StorageCollectionName, &storage); err != nil {
if mgo.IsDup(err) {
response.Conflict(req.Request, resp.ResponseWriter, fmt.Errorf("Storage Provider Name: %s already existed", storage.Name))
Expand Down Expand Up @@ -140,7 +140,7 @@ func deleteStorage(ctx *web.Context) {
return
}

if err := storageProvider.DeleteStorage(sp, storage); err != nil {
if err := storageProvider.DeleteStorage(sp, &storage); err != nil {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
Expand Down
16 changes: 8 additions & 8 deletions src/server/handler_storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ func (suite *StorageTestSuite) TestCreateStorage() {
storage := entity.Storage{
Type: entity.FakeStorageType,
Name: tName,
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "fake~",
},
}
Expand Down Expand Up @@ -103,22 +103,22 @@ func (suite *StorageTestSuite) TestCreateStorageFail() {
{"InvalidParameter", entity.Storage{
Name: namesgenerator.GetRandomName(0),
Type: entity.FakeStorageType,
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "",
}},
http.StatusBadRequest},
{"CreateFail", entity.Storage{
Name: namesgenerator.GetRandomName(0),
Type: entity.FakeStorageType,
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "Yo",
IWantFail: true,
}},
http.StatusInternalServerError},
{"StorageTypeError", entity.Storage{
Name: namesgenerator.GetRandomName(0),
Type: "non-exist",
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "Yo",
IWantFail: true,
}},
Expand Down Expand Up @@ -150,7 +150,7 @@ func (suite *StorageTestSuite) TestDeleteStorage() {
ID: bson.NewObjectId(),
Type: entity.FakeStorageType,
Name: tName,
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "fake~",
},
}
Expand Down Expand Up @@ -198,7 +198,7 @@ func (suite *StorageTestSuite) TestDeleteStorageFail() {
ID: bson.NewObjectId(),
Name: namesgenerator.GetRandomName(0),
Type: entity.FakeStorageType,
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "Yo-Delete-Fail",
IWantFail: true,
}},
Expand All @@ -207,7 +207,7 @@ func (suite *StorageTestSuite) TestDeleteStorageFail() {
ID: bson.NewObjectId(),
Name: namesgenerator.GetRandomName(0),
Type: "non-exist",
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "Yo-Delete-Fail",
IWantFail: true,
}},
Expand Down Expand Up @@ -238,7 +238,7 @@ func (suite *StorageTestSuite) TestListStorage() {
storages = append(storages, entity.Storage{
Name: namesgenerator.GetRandomName(0),
Type: entity.FakeStorageType,
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "Yo",
IWantFail: false,
},
Expand Down
6 changes: 3 additions & 3 deletions src/storageprovider/fake.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,21 @@ type FakeStorageProvider struct {
entity.FakeStorage
}

func (fake FakeStorageProvider) ValidateBeforeCreating(sp *serviceprovider.Container, net entity.Storage) error {
func (fake FakeStorageProvider) ValidateBeforeCreating(sp *serviceprovider.Container, net *entity.Storage) error {
if fake.FakeParameter == "" {
return fmt.Errorf("Fail to validate but don't worry, I'm fake storage provider")
}
return nil
}

func (fake FakeStorageProvider) CreateStorage(sp *serviceprovider.Container, net entity.Storage) error {
func (fake FakeStorageProvider) CreateStorage(sp *serviceprovider.Container, net *entity.Storage) error {
if fake.IWantFail {
return fmt.Errorf("Fail to create storage but don't worry, I'm fake storage provider")
}
return nil
}

func (fake FakeStorageProvider) DeleteStorage(sp *serviceprovider.Container, net entity.Storage) error {
func (fake FakeStorageProvider) DeleteStorage(sp *serviceprovider.Container, net *entity.Storage) error {
if fake.IWantFail {
return fmt.Errorf("Fail to delete storage but don't worry, I'm fake storage provider")
}
Expand Down
24 changes: 12 additions & 12 deletions src/storageprovider/fake_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,70 +11,70 @@ import (
func TestStorageValidateBeforeCreating(t *testing.T) {
fake, err := GetStorageProvider(&entity.Storage{
Type: "fake",
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "yes",
},
})
assert.NoError(t, err)
err = fake.ValidateBeforeCreating(nil, entity.Storage{})
err = fake.ValidateBeforeCreating(nil, &entity.Storage{})
assert.NoError(t, err)
}

func TestFakeStorageCreating(t *testing.T) {
fake, err := GetStorageProvider(&entity.Storage{
Type: "fake",
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "yes",
IWantFail: false,
},
})
assert.NoError(t, err)
err = fake.CreateStorage(nil, entity.Storage{})
err = fake.CreateStorage(nil, &entity.Storage{})
assert.NoError(t, err)
}

func TestFakeStorageValidateBeforeCreatingFail(t *testing.T) {
fake, err := GetStorageProvider(&entity.Storage{
Type: "fake",
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
FakeParameter: "",
},
})
assert.NoError(t, err)
err = fake.ValidateBeforeCreating(nil, entity.Storage{})
err = fake.ValidateBeforeCreating(nil, &entity.Storage{})
assert.Error(t, err)
}

func TestFakeStorageCreatingFail(t *testing.T) {
fake, err := GetStorageProvider(&entity.Storage{
Type: "fake",
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
IWantFail: true,
},
})
assert.NoError(t, err)
err = fake.CreateStorage(nil, entity.Storage{})
err = fake.CreateStorage(nil, &entity.Storage{})
assert.Error(t, err)
}

func TestFakeStorageDelete(t *testing.T) {
fake, err := GetStorageProvider(&entity.Storage{
Type: "fake",
Fake: entity.FakeStorage{},
Fake: &entity.FakeStorage{},
})
assert.NoError(t, err)
err = fake.DeleteStorage(nil, entity.Storage{})
err = fake.DeleteStorage(nil, &entity.Storage{})
assert.NoError(t, err)
}

func TestFakeStorageDeleteFail(t *testing.T) {
fake, err := GetStorageProvider(&entity.Storage{
Type: "fake",
Fake: entity.FakeStorage{
Fake: &entity.FakeStorage{
IWantFail: true,
},
})
assert.NoError(t, err)
err = fake.DeleteStorage(nil, entity.Storage{})
err = fake.DeleteStorage(nil, &entity.Storage{})
assert.Error(t, err)
}
Loading

0 comments on commit 9f3fbbc

Please sign in to comment.