func undoStartBricks(c transaction.TxnCtx) error { var volname string if e := c.Get("volname", &volname); e != nil { c.Logger().WithFields(log.Fields{ "error": e, "key": "volname", }).Error("failed to get value for key from context") return e } vol, e := volume.GetVolume(volname) if e != nil { // this shouldn't happen c.Logger().WithFields(log.Fields{ "error": e, "volname": volname, }).Error("failed to get volinfo for volume") return e } for _, b := range vol.Bricks { if uuid.Equal(b.ID, gdctx.MyUUID) { c.Logger().WithFields(log.Fields{ "volume": volname, "brick": b.Hostname + ":" + b.Path, }).Info("volume start failed, stopping bricks") //TODO: Stop started brick processes once the daemon management package is ready brickDaemon, err := brick.NewDaemon(vol.Name, b) if err != nil { return err } err = daemon.Stop(brickDaemon, true) if err != nil { return err } } } return nil }
func stopBricks(c transaction.TxnCtx) error { var volname string if e := c.Get("volname", &volname); e != nil { c.Logger().WithFields(log.Fields{ "error": e, "key": "volname", }).Error("failed to get value for key from context") return e } vol, e := volume.GetVolume(volname) if e != nil { // this shouldn't happen c.Logger().WithFields(log.Fields{ "error": e, "volname": volname, }).Error("failed to get volinfo for volume") return e } for _, b := range vol.Bricks { if uuid.Equal(b.ID, gdctx.MyUUID) { c.Logger().WithFields(log.Fields{ "volume": volname, "brick": b.Hostname + ":" + b.Path, }).Info("would stop brick") brickDaemon, err := brick.NewDaemon(vol.Name, b) if err != nil { return err } err = daemon.Stop(brickDaemon, false) if err != nil { return err } } } return nil }