本文整理汇总了Golang中github.com/heketi/heketi/executors.Executor.VolumeExpand方法的典型用法代码示例。如果您正苦于以下问题:Golang Executor.VolumeExpand方法的具体用法?Golang Executor.VolumeExpand怎么用?Golang Executor.VolumeExpand使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/heketi/heketi/executors.Executor
的用法示例。
在下文中一共展示了Executor.VolumeExpand方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Expand
func (v *VolumeEntry) Expand(db *bolt.DB,
executor executors.Executor,
allocator Allocator,
sizeGB int) (e error) {
// Allocate new bricks in the cluster
brick_entries, err := v.allocBricksInCluster(db, allocator, v.Info.Cluster, sizeGB)
if err != nil {
return err
}
// Setup cleanup function
defer func() {
if e != nil {
logger.Debug("Error detected, cleaning up")
// Remove from db
db.Update(func(tx *bolt.Tx) error {
for _, brick := range brick_entries {
v.removeBrickFromDb(tx, brick)
}
err := v.Save(tx)
godbc.Check(err == nil)
return nil
})
}
}()
// Create bricks
err = CreateBricks(db, executor, brick_entries)
if err != nil {
logger.Err(err)
return err
}
// Setup cleanup function
defer func() {
if e != nil {
logger.Debug("Error detected, cleaning up")
DestroyBricks(db, executor, brick_entries)
}
}()
// Create a volume request to send to executor
// so that it can add the new bricks
vr, host, err := v.createVolumeRequest(db, brick_entries)
if err != nil {
return err
}
// Expand the volume
_, err = executor.VolumeExpand(host, vr)
if err != nil {
return err
}
// Increase the recorded volume size
v.Info.Size += sizeGB
// Save volume entry
err = db.Update(func(tx *bolt.Tx) error {
// Save brick entries
for _, brick := range brick_entries {
err := brick.Save(tx)
if err != nil {
return err
}
}
return v.Save(tx)
})
return err
}