Merge pull request #14329 from rook/mergify/bp/release-1.14/pr-14325

pool: get the exact deviceClass name instead of crushroot+deviceClass (backport #14325)
This commit is contained in:
Travis Nielsen authored and GitHub committed 2024-06-13 10:38:31 -06:00
commit 73e8765609
2 files changed
+19 -1

No files matched your search

+9 -1
View File
@@ -529,7 +529,15 @@ func extractPoolDetails(rule ruleSpec) (string, string) {
failureDomain = step.Type
}
if step.ItemName != "" {
deviceClass = step.ItemName
// we are not using crushRoot currently, remove it
// from crush rule
if strings.Contains(step.ItemName, "~") {
crushRootAndDeviceClass := step.ItemName
parts := strings.SplitN(crushRootAndDeviceClass, "~", 2)
deviceClass = parts[1]
} else {
deviceClass = step.ItemName
}
}
// We expect the rule to be found by the second step, or else it is a more
// complex rule that would not be supported for updating the failure domain
+10
View File
@@ -339,6 +339,16 @@ func TestExtractPoolDetails(t *testing.T) {
assert.Equal(t, "zone", failureDomain)
assert.Equal(t, "ssd", deviceClass)
})
t.Run("valid crush rule with crushroot combined", func(t *testing.T) {
rule := ruleSpec{Steps: []stepSpec{
{Type: ""},
{Type: "zone", ItemName: "default~ssd"},
}}
failureDomain, deviceClass := extractPoolDetails(rule)
assert.Equal(t, "zone", failureDomain)
assert.Equal(t, "ssd", deviceClass)
})
}
func TestGetPoolStatistics(t *testing.T) {