recon not contacting all hosts when using storage policies
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
Fix Released
|
Undecided
|
Christopher Bartz |
Bug Description
Recon does only contact the hosts of devices defined in the ring of Policy-0. In a scenario, where a second storage-policy uses different object servers, these object-servers are not contacted. Thus, for example the check "get_disk_usage" does not report the total space used in the swift cluster.
The problem lies in lines 1007 / 1008 of swift/cli/recon.py: Instead of passing all possible ring names, it only passes in the ring name "object", which is the ring name of POLICY-0. Instead it should do something like in lines 239-242:
for ring_name in os.listdir(
if ring_name.
CVE References
Changed in swift: | |
assignee: | nobody → Christopher Bartz (bartz) |
Yeah I guess the cheapest way to fix the bug without adding a new interface would be to make get_devices able to load multiple rings for each "server_ type/check_ type/ring_ name".
basically if ring_name == 'object' go pawing around for policies in swift.conf
But it might be more helpful if there was a new commandline option to set the policy which only has effect if server_type == 'object'
I guess it'd be helpful to have both
"show me df on all object nodes in all policies"
"show me df on all object nodes in policy gold"