Skip to content

Instantly share code, notes, and snippets.

@clayg
Created July 28, 2020 00:17
Show Gist options
  • Select an option

  • Save clayg/4453822dceb83560e9caa7fd54155bd9 to your computer and use it in GitHub Desktop.

Select an option

Save clayg/4453822dceb83560e9caa7fd54155bd9 to your computer and use it in GitHub Desktop.
spit out some json for swift-ring-builder-analyizer
import json
import sys
def gen_ips():
i = 147
j = 153
while True:
j += 1
if j > 254:
j = 1
i += 1
yield '10.150.%s.%s' % (i, j)
def gen_devices():
d = 4073
while True:
d += 1
yield 'd%s' % d
class RoundBuilder(object):
def __init__(self):
self.ip_gen = gen_ips()
self.dev_gen = gen_devices()
def make_round(self, zones, servers_per_zone, devices_per_server,
weight_per_device):
servers = []
for zone in zones:
for _s in range(servers_per_zone):
server_ip = next(self.ip_gen)
for d in range(devices_per_server):
port = 6007 + d
dev = next(self.dev_gen)
servers.append('r1z%s-%s:%s/%s' % (
zone, server_ip, port, dev))
return [
["add", dsl, weight_per_device]
for dsl in servers
]
def main():
rb = RoundBuilder()
output = {
"builder": "object-1.builder",
"overload": 0.0,
"random_seed": 1,
"rounds": [
rb.make_round([16, 17], 48, 10, 10000.83),
# rb.make_round([20, 21, 22, 23], 24, 10, 10000.83),
# rb.make_round([24, 25], 51, 24, 12000.83),
[
["save", "object-new.builder"]
]
]
}
print(json.dumps(output, indent=2))
if __name__ == "__main__":
sys.exit(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment