def test_map(self): crushmap = self.build_crushmap() c = Crush(verbose=1) assert c.parse(crushmap) assert len( c.map(rule="data", value=1234, replication_count=1, weights={}, choose_args=[])) == 1
def run_crush(): value = sys.argv[1] rcount = sys.argv[2] crushmap = open("./config/crushmap.json", "r").read() c = Crush() c.parse(json.loads(crushmap)) devices = c.map(rule="data", value=int(value), replication_count=int(rcount)) return devices
"children": [ { "id": 2, "name": "device2", "weight": 1.0 }, { "id": 3, "name": "device3", "weight": 2.0 } ] }, { "type": "host", "name": "host2", "id": -4, "children": [ { "id": 4, "name": "device4", "weight": 1.0 }, { "id": 5, "name": "device5", "weight": 2.0 } ] } ] } ], "rules": { "data": [ [ "take", "dc1" ], [ "chooseleaf", "firstn", 0, "type", "host" ], [ "emit" ] ] } } """ c = Crush() c.parse(json.loads(crushmap)) print c.map(rule="data", value=1234, replication_count=1) print c.map(rule="data", value=1234, replication_count=2)