ax(mining): use explicit miner names
This commit is contained in:
parent
14839e58cf
commit
e8f88e47a6
2 changed files with 25 additions and 25 deletions
|
|
@ -50,11 +50,11 @@ var instanceNameRegex = regexp.MustCompile(`[^a-zA-Z0-9_/-]`)
|
|||
// defer managerInterface.Stop()
|
||||
type ManagerInterface interface {
|
||||
StartMiner(ctx context.Context, minerType string, config *Config) (Miner, error)
|
||||
StopMiner(ctx context.Context, name string) error
|
||||
GetMiner(name string) (Miner, error)
|
||||
StopMiner(ctx context.Context, minerName string) error
|
||||
GetMiner(minerName string) (Miner, error)
|
||||
ListMiners() []Miner
|
||||
ListAvailableMiners() []AvailableMiner
|
||||
GetMinerHashrateHistory(name string) ([]HashratePoint, error)
|
||||
GetMinerHashrateHistory(minerName string) ([]HashratePoint, error)
|
||||
UninstallMiner(ctx context.Context, minerType string) error
|
||||
Stop()
|
||||
}
|
||||
|
|
@ -439,7 +439,7 @@ func (manager *Manager) updateMinerConfig(minerType string, autostart bool, conf
|
|||
|
||||
// manager.StopMiner(ctx, "xmrig/monero") stops the matching miner instance and removes it from the manager map.
|
||||
// manager.StopMiner(ctx, "ttminer/rtx4090") still removes the entry when the miner has already stopped.
|
||||
func (manager *Manager) StopMiner(ctx context.Context, name string) error {
|
||||
func (manager *Manager) StopMiner(ctx context.Context, minerName string) error {
|
||||
// ctx, cancel := context.WithCancel(context.Background()); cancel(); manager.StopMiner(ctx, "xmrig-rx_0") returns context.Canceled before locking.
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
|
|
@ -450,12 +450,12 @@ func (manager *Manager) StopMiner(ctx context.Context, name string) error {
|
|||
manager.mutex.Lock()
|
||||
defer manager.mutex.Unlock()
|
||||
|
||||
miner, exists := manager.miners[name]
|
||||
miner, exists := manager.miners[minerName]
|
||||
if !exists {
|
||||
for minerKey := range manager.miners {
|
||||
if hasPrefix(minerKey, name) {
|
||||
if hasPrefix(minerKey, minerName) {
|
||||
miner = manager.miners[minerKey]
|
||||
name = minerKey
|
||||
minerName = minerKey
|
||||
exists = true
|
||||
break
|
||||
}
|
||||
|
|
@ -463,19 +463,19 @@ func (manager *Manager) StopMiner(ctx context.Context, name string) error {
|
|||
}
|
||||
|
||||
if !exists {
|
||||
return ErrMinerNotFound(name)
|
||||
return ErrMinerNotFound(minerName)
|
||||
}
|
||||
|
||||
// manager.emitEvent(EventMinerStopping, MinerEventData{Name: "xmrig-rx_0"}) tells websocket clients shutdown has started.
|
||||
manager.emitEvent(EventMinerStopping, MinerEventData{
|
||||
Name: name,
|
||||
Name: minerName,
|
||||
})
|
||||
|
||||
// stopErr := miner.Stop() may fail after an external kill, but cleanup continues so the manager state stays accurate.
|
||||
stopErr := miner.Stop()
|
||||
|
||||
// delete(manager.miners, "xmrig-rx_0") removes stale entries even when the process has already exited.
|
||||
delete(manager.miners, name)
|
||||
delete(manager.miners, minerName)
|
||||
|
||||
// manager.emitEvent(EventMinerStopped, MinerEventData{Name: "xmrig-rx_0", Reason: "stopped"}) confirms the final stop reason.
|
||||
reason := "stopped"
|
||||
|
|
@ -483,7 +483,7 @@ func (manager *Manager) StopMiner(ctx context.Context, name string) error {
|
|||
reason = stopErr.Error()
|
||||
}
|
||||
manager.emitEvent(EventMinerStopped, MinerEventData{
|
||||
Name: name,
|
||||
Name: minerName,
|
||||
Reason: reason,
|
||||
})
|
||||
|
||||
|
|
@ -523,21 +523,21 @@ func (manager *Manager) ListMiners() []Miner {
|
|||
// simulatedMiner := NewSimulatedMiner(SimulatedMinerConfig{Name: "sim-rx0"})
|
||||
// if err := manager.RegisterMiner(simulatedMiner); err != nil { return err }
|
||||
func (manager *Manager) RegisterMiner(miner Miner) error {
|
||||
name := miner.GetName()
|
||||
minerName := miner.GetName()
|
||||
|
||||
manager.mutex.Lock()
|
||||
if _, exists := manager.miners[name]; exists {
|
||||
if _, exists := manager.miners[minerName]; exists {
|
||||
manager.mutex.Unlock()
|
||||
return ErrMinerExists(name)
|
||||
return ErrMinerExists(minerName)
|
||||
}
|
||||
manager.miners[name] = miner
|
||||
manager.miners[minerName] = miner
|
||||
manager.mutex.Unlock()
|
||||
|
||||
logging.Info("registered miner", logging.Fields{"name": name})
|
||||
logging.Info("registered miner", logging.Fields{"miner_name": minerName})
|
||||
|
||||
// Emit miner started event (outside lock)
|
||||
manager.emitEvent(EventMinerStarted, map[string]interface{}{
|
||||
"name": name,
|
||||
// Emit miner started event (outside lock) with the shared event payload shape.
|
||||
manager.emitEvent(EventMinerStarted, MinerEventData{
|
||||
Name: minerName,
|
||||
})
|
||||
|
||||
return nil
|
||||
|
|
@ -713,12 +713,12 @@ func (manager *Manager) collectSingleMinerStats(miner Miner, minerType string, n
|
|||
|
||||
// points, err := manager.GetMinerHashrateHistory("xmrig")
|
||||
// for _, point := range points { logging.Info("hashrate", logging.Fields{"time": point.Timestamp, "rate": point.Hashrate}) }
|
||||
func (manager *Manager) GetMinerHashrateHistory(name string) ([]HashratePoint, error) {
|
||||
func (manager *Manager) GetMinerHashrateHistory(minerName string) ([]HashratePoint, error) {
|
||||
manager.mutex.RLock()
|
||||
defer manager.mutex.RUnlock()
|
||||
miner, exists := manager.miners[name]
|
||||
miner, exists := manager.miners[minerName]
|
||||
if !exists {
|
||||
return nil, ErrMinerNotFound(name)
|
||||
return nil, ErrMinerNotFound(minerName)
|
||||
}
|
||||
return miner.GetHashrateHistory(), nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ import (
|
|||
"crypto/sha256"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"forge.lthn.ai/Snider/Borg/pkg/datanode"
|
||||
"forge.lthn.ai/Snider/Borg/pkg/tim"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"forge.lthn.ai/Snider/Borg/pkg/datanode"
|
||||
"forge.lthn.ai/Snider/Borg/pkg/tim"
|
||||
)
|
||||
|
||||
// bundle.Type = BundleProfile // config/profile JSON only
|
||||
|
|
@ -207,7 +207,7 @@ func isJSON(data []byte) bool {
|
|||
return data[0] == '{' || data[0] == '['
|
||||
}
|
||||
|
||||
// tarData, err := createTarball(map[string][]byte{"xmrig": binaryData, "config.json": cfgData})
|
||||
// tarData, err := createTarball(map[string][]byte{"xmrig": binaryData, "config.json": configData})
|
||||
// if err != nil { return nil, err }
|
||||
func createTarball(files map[string][]byte) ([]byte, error) {
|
||||
var buffer bytes.Buffer
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue