Skip to content

Commit

Permalink
Fix some bugs for thin-opensds
Browse files Browse the repository at this point in the history
  • Loading branch information
leonwanghui committed Jun 21, 2019
1 parent b0eabbb commit ef946c8
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions pkg/api/controllers/volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,11 @@ func (v *VolumePortal) CreateVolume() {
}
// To get backend details for Thin OpenSDS
if CONF.OsdsApiServer.InstallType == "thin" {
if opt.PoolId == "" {
log.Error("poolId must be set when creating volume in thin mode!")
db.UpdateVolumeStatus(ctx, db.C, opt.Id, model.VolumeError)
return
}
// Currently poolName should be fetched from metadata field.
opt.PoolName = result.Metadata["poolName"]
if opt.PoolName == "" {
Expand All @@ -157,17 +162,11 @@ func (v *VolumePortal) CreateVolume() {
errorMsg.GetCode(), errorMsg.GetDescription())
return
}
// TODO Update volume status for Thin OpenSDS in DB
// Update volume status for Thin OpenSDS in DB
// Updating Volume status in DB
if CONF.InstallType == "thin" {
if err := json.Unmarshal([]byte(response.GetResult().GetMessage()), result); err != nil {
log.Error("unmarshal create volume result failed in apiserver:", err)
return
}
// Currently poolId should be fetched from metadata field.
result.PoolId, result.ProfileId = result.Metadata["poolId"], prf.Id
if opt.PoolId == "" {
log.Error("PoolId must be set in metadata when creating volume in thin mode!")
db.UpdateVolumeStatus(ctx, db.C, opt.Id, model.VolumeError)
return
}
Expand Down Expand Up @@ -313,7 +312,13 @@ func (v *VolumePortal) ExtendVolume() {
}
// To get backend details for Thin OpenSDS
if CONF.OsdsApiServer.InstallType == "thin" {
opt.PoolId = result.PoolId
// Currently poolName should be fetched from metadata field.
opt.PoolName = result.Metadata["poolName"]
if opt.PoolName == "" {
log.Error("poolName must be set in metadata when extending volume in thin mode!")
db.UpdateVolumeStatus(ctx, db.C, opt.Id, model.VolumeError)
return
}
opt.DriverName = CONF.OsdsDock.EnabledBackends[0]
}

Expand All @@ -332,6 +337,7 @@ func (v *VolumePortal) ExtendVolume() {
if CONF.InstallType == "thin" {
if err := json.Unmarshal([]byte(response.GetResult().GetMessage()), result); err != nil {
log.Error("unmarshal extend volume result failed in apiserver:", err)
db.UpdateVolumeStatus(ctx, db.C, opt.Id, model.VolumeError)
return
}
db.C.UpdateStatus(ctx, result, model.VolumeAvailable)
Expand Down Expand Up @@ -503,6 +509,7 @@ func (v *VolumeAttachmentPortal) CreateVolumeAttachment() {
vol, err := db.C.GetVolume(ctx, result.VolumeId)
if err != nil {
log.Error("get volume failed in create volume attachment method:", err)
db.UpdateVolumeAttachmentStatus(ctx, db.C, opt.Id, model.VolumeAttachError)
return
}

Expand Down Expand Up @@ -532,15 +539,15 @@ func (v *VolumeAttachmentPortal) CreateVolumeAttachment() {
errorMsg.GetCode(), errorMsg.GetDescription())
return
}
// TODO Update volume status for Thin OpenSDS in DB
// Update volume status for Thin OpenSDS in DB
// Updating Volume status in DB
if CONF.InstallType == "thin" {
if err := json.Unmarshal([]byte(response.GetResult().GetMessage()), result); err != nil {
log.Error("unmarshal create volume attachment result failed in apiserver:", err)
db.UpdateVolumeAttachmentStatus(ctx, db.C, opt.Id, model.VolumeAttachError)
return
}
vol, _ := db.C.GetVolume(ctx, result.VolumeId)
db.UpdateVolumeStatus(ctx, db.C, vol.Id, model.VolumeInUse)
db.UpdateVolumeStatus(ctx, db.C, result.VolumeId, model.VolumeInUse)
db.C.UpdateStatus(ctx, result, model.VolumeAttachAvailable)
}

Expand Down Expand Up @@ -688,7 +695,7 @@ func (v *VolumeAttachmentPortal) DeleteVolumeAttachment() {
// Updating Volume attachment status in DB
if CONF.InstallType == "thin" {
db.C.DeleteVolumeAttachment(ctx, opt.Id)
db.UpdateVolumeStatus(ctx, db.C, opt.Id, model.VolumeAvailable)
db.UpdateVolumeStatus(ctx, db.C, opt.VolumeId, model.VolumeAvailable)
}

return
Expand Down Expand Up @@ -806,6 +813,7 @@ func (v *VolumeSnapshotPortal) CreateVolumeSnapshot() {
if CONF.InstallType == "thin" {
if err := json.Unmarshal([]byte(response.GetResult().GetMessage()), result); err != nil {
log.Error("unmarshal create volume snapshot result failed in apiserver:", err)
db.UpdateVolumeSnapshotStatus(ctx, db.C, opt.Id, model.VolumeSnapError)
return
}
db.C.UpdateStatus(ctx, result, model.VolumeSnapAvailable)
Expand Down

0 comments on commit ef946c8

Please sign in to comment.