My problem is on the line 583
parent_nodes = [ node for node in json_tree['nodes'] if node['type'] == 'root']
See instruction if node['type'] == 'root' is limited only tree default root but not work com other crushmap equal my.
I have two rack below root, for this function working with my crushmap, I need change root for rack.
This function could be more flexible.
# ceph osd tree --format=json
{"nodes":[{"id":-1,"name":"default","type":"root","type_id":10,"children":[-3,-2]},{"id":-2,"name":"sata","type":"rack","type_id":3,"pool_weights":{},"children":[-5,-4]},{"id":-4,"name":"uat-l-stor-11","type":"host","type_id":1,"pool_weights":{},"children":[5,4,3,2,1,0]},{"id":0,"device_class":"hdd","name":"osd.0","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":1,"device_class":"hdd","name":"osd.1","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":2,"device_class":"hdd","name":"osd.2","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":3,"device_class":"hdd","name":"osd.3","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":4,"device_class":"hdd","name":"osd.4","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":5,"device_class":"hdd","name":"osd.5","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":-5,"name":"uat-l-stor-12","type":"host","type_id":1,"pool_weights":{},"children":[11,10,9,8,7,6]},{"id":6,"device_class":"hdd","name":"osd.6","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":7,"device_class":"hdd","name":"osd.7","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":8,"device_class":"hdd","name":"osd.8","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":9,"device_class":"hdd","name":"osd.9","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":10,"device_class":"hdd","name":"osd.10","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":11,"device_class":"hdd","name":"osd.11","type":"osd","type_id":0,"crush_weight":5.455994,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":-3,"name":"ssd","type":"rack","type_id":3,"pool_weights":{},"children":[-7,-6]},{"id":-6,"name":"uat-l-stor-13","type":"host","type_id":1,"pool_weights":{},"children":[17,16,15,14,13,12]},{"id":12,"name":"osd.12","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":13,"name":"osd.13","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":14,"name":"osd.14","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":15,"name":"osd.15","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":16,"name":"osd.16","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":17,"name":"osd.17","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":-7,"name":"uat-l-stor-14","type":"host","type_id":1,"pool_weights":{},"children":[23,22,21,20,19,18]},{"id":18,"name":"osd.18","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":19,"name":"osd.19","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":20,"name":"osd.20","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":21,"name":"osd.21","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":22,"name":"osd.22","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000},{"id":23,"name":"osd.23","type":"osd","type_id":0,"crush_weight":1.429993,"depth":3,"pool_weights":{},"exists":1,"status":"up","reweight":1.000000,"primary_affinity":1.000000}],"stray":[]}
My problem is on the line 583
parent_nodes = [
node for node in json_tree['nodes'] if node['type'] == 'root']
See instruction if node['type'] == 'root' is limited only tree default root but not work com other crushmap equal my.
I have two rack below root, for this function working with my crushmap, I need change root for rack.
This function could be more flexible.
# ceph osd tree --format=json
{"nodes" :[{"id" :-1,"name" :"default" ,"type" :"root" ,"type_ id":10, "children" :[-3,-2] },{"id" :-2,"name" :"sata" ,"type" :"rack" ,"type_ id":3," pool_weights" :{},"children" :[-5,-4] },{"id" :-4,"name" :"uat-l- stor-11" ,"type" :"host" ,"type_ id":1," pool_weights" :{},"children" :[5,4,3, 2,1,0]} ,{"id": 0,"device_ class": "hdd"," name":" osd.0", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 1,"device_ class": "hdd"," name":" osd.1", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 2,"device_ class": "hdd"," name":" osd.2", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 3,"device_ class": "hdd"," name":" osd.3", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 4,"device_ class": "hdd"," name":" osd.4", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 5,"device_ class": "hdd"," name":" osd.5", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": -5,"name" :"uat-l- stor-12" ,"type" :"host" ,"type_ id":1," pool_weights" :{},"children" :[11,10, 9,8,7,6] },{"id" :6,"device_ class": "hdd"," name":" osd.6", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 7,"device_ class": "hdd"," name":" osd.7", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 8,"device_ class": "hdd"," name":" osd.8", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 9,"device_ class": "hdd"," name":" osd.9", "type": "osd"," type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 10,"device_ class": "hdd"," name":" osd.10" ,"type" :"osd", "type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 11,"device_ class": "hdd"," name":" osd.11" ,"type" :"osd", "type_id" :0,"crush_ weight" :5.455994, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": -3,"name" :"ssd", "type": "rack", "type_id" :3,"pool_ weights" :{},"children" :[-7,-6] },{"id" :-6,"name" :"uat-l- stor-13" ,"type" :"host" ,"type_ id":1," pool_weights" :{},"children" :[17,16, 15,14,13, 12]},{" id":12, "name": "osd.12" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 13,"name" :"osd.13" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 14,"name" :"osd.14" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 15,"name" :"osd.15" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 16,"name" :"osd.16" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 17,"name" :"osd.17" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": -7,"name" :"uat-l- stor-14" ,"type" :"host" ,"type_ id":1," pool_weights" :{},"children" :[23,22, 21,20,19, 18]},{" id":18, "name": "osd.18" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 19,"name" :"osd.19" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 20,"name" :"osd.20" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 21,"name" :"osd.21" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 22,"name" :"osd.22" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ,{"id": 23,"name" :"osd.23" ,"type" :"osd", "type_id" :0,"crush_ weight" :1.429993, "depth" :3,"pool_ weights" :{},"exists" :1,"status" :"up"," reweight" :1.000000, "primary_ affinity" :1.000000} ],"stray" :[]}