func (b *BrickEntry) Destroy(db *bolt.DB, executor executors.Executor) error { godbc.Require(db != nil) godbc.Require(b.TpSize > 0) godbc.Require(b.Info.Size > 0) if b.State != BRICK_STATE_ONLINE { return nil } // Get node hostname var host string err := db.View(func(tx *bolt.Tx) error { node, err := NewNodeEntryFromId(tx, b.Info.NodeId) if err != nil { return err } host = node.ManageHostName() godbc.Check(host != "") return nil }) if err != nil { return err } // Create request req := &executors.BrickRequest{} req.Name = b.Info.Id req.Size = b.Info.Size req.TpSize = b.TpSize req.VgId = b.Info.DeviceId // Delete brick on node logger.Info("Deleting brick %v", b.Info.Id) err = executor.BrickDestroy(host, req) if err != nil { b.State = BRICK_STATE_FAILED return err } b.State = BRICK_STATE_DELETED godbc.Ensure(b.State == BRICK_STATE_DELETED) return nil }