You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
package command
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/glog"
|
|
"github.com/seaweedfs/seaweedfs/weed/worker/tasks"
|
|
"github.com/seaweedfs/seaweedfs/weed/worker/types"
|
|
)
|
|
|
|
// parseCapabilities converts comma-separated legacy maintenance capabilities to task types.
|
|
// This remains for mini-mode maintenance worker wiring.
|
|
func parseCapabilities(capabilityStr string) []types.TaskType {
|
|
if capabilityStr == "" {
|
|
return nil
|
|
}
|
|
|
|
capabilityMap := map[string]types.TaskType{}
|
|
|
|
typesRegistry := tasks.GetGlobalTypesRegistry()
|
|
for taskType := range typesRegistry.GetAllDetectors() {
|
|
capabilityMap[strings.ToLower(string(taskType))] = taskType
|
|
}
|
|
|
|
if taskType, exists := capabilityMap["erasure_coding"]; exists {
|
|
capabilityMap["ec"] = taskType
|
|
}
|
|
if taskType, exists := capabilityMap["remote_upload"]; exists {
|
|
capabilityMap["remote"] = taskType
|
|
}
|
|
if taskType, exists := capabilityMap["fix_replication"]; exists {
|
|
capabilityMap["replication"] = taskType
|
|
}
|
|
|
|
var capabilities []types.TaskType
|
|
parts := strings.Split(capabilityStr, ",")
|
|
|
|
for _, part := range parts {
|
|
part = strings.TrimSpace(part)
|
|
if taskType, exists := capabilityMap[part]; exists {
|
|
capabilities = append(capabilities, taskType)
|
|
} else {
|
|
glog.Warningf("Unknown capability: %s", part)
|
|
}
|
|
}
|
|
|
|
return capabilities
|
|
}
|