Last active
January 2, 2016 23:19
-
-
Save jimfulton/8375482 to your computer and use it in GitHub Desktop.
Script that illustrates issue writing empty nodes w kazoo and reading them with the Python C ZooKeeper API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kazoo script that builds a ZooKeeper tree. To run, with kazoo in the path:: | |
bad.py inp | |
If you export the tree with zc.zk 1, you'll see random(ish) bad data in the nodes that should be empty. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import kazoo.client, sys, time, hashlib | |
def inp(client, nonblank=False): | |
for path, data in test_data: | |
if nonblank: | |
data = data or '{}' | |
client.create(path, data) | |
def set(client, nonblank=False): | |
for path, data in test_data: | |
if nonblank: | |
data = data or '{}' | |
client.set(path, data) | |
def check(client): | |
for path, data in test_data: | |
stored = client.get(path)[0] | |
if stored != data: | |
print 'bad data at', path, "%r != %r" % (stored, data) | |
def pt(client): | |
import zc.zk | |
zc.zk.ZK(client).print_tree() | |
def clear(client): | |
client.delete('/cust', recursive=True) | |
def main(): | |
args = sys.argv[1:] | |
func_name = args.pop(0) | |
client = kazoo.client.KazooClient('127.0.0.1:2181') | |
client.start() | |
globals()[func_name](client, *args) | |
client.stop() | |
client.close() | |
test_data = ( | |
('/cust', '{"zrs-primary":"storage1.cust.nova.aws.zope.net","admin-zaam-domain":"CUST","retail-zaam-domain":"cust-retail","zrs-version":"3.9.0"}'), | |
('/cust/checkout', ''), | |
('/cust/checkout/app', '{"branding ->":"../../databases/branding","sessions ->":"../../databases/authsessions","port":15040,"zaam ->":"../../databases/profiles"}'), | |
('/cust/checkout/checkout.zope.net', '{"address =>":"../app port","type":"nginx.host","strict-transport-security":true,"version =>":"/cust/versions nginx.host"}'), | |
('/cust/checkout/checkout.zope.net/deploy', ''), | |
('/cust/checkout/checkout.zope.net/deploy/app.cust', ''), | |
('/cust/databases', '{"profiles ->":"/zmh/databases/profiles","multi-gc":"main= sessions ugc =zaam =transcoder","zaam ->":"/zmh/databases/zaam","primary":"das-head1.zope.net","version =>":".. zrs-version","perform-gc-if-secondary":false,"branding ->":"/zmh/databases/branding","type":"zrs","digest":0}'), | |
('/cust/databases/authsessions', '{"digest =>":"..","primary =>":"../.. zrs-primary","type":"zrs","blobs":false,"version =>":"../.. zrs-version"}'), | |
('/cust/databases/authsessions/deploy', ''), | |
('/cust/databases/authsessions/deploy/storage.cust', ''), | |
('/cust/databases/authsessions/providers', ''), | |
('/cust/databases/authsessions/replication', ''), | |
('/cust/databases/authsessions/replication/providers', ''), | |
('/cust/databases/authsessions/secondary', ''), | |
('/cust/databases/authsessions/secondary/providers', ''), | |
('/cust/databases/authsessions/secondary/replication', ''), | |
('/cust/databases/authsessions/secondary/replication/providers', ''), | |
('/cust/databases/customerservice', '{"digest =>":"..","primary =>":"..","type":"zrs","blobs":false,"version =>":"../.. zrs-version"}'), | |
('/cust/databases/customerservice/deploy', ''), | |
('/cust/databases/customerservice/deploy/storage.cust', ''), | |
('/cust/databases/customerservice/providers', ''), | |
('/cust/databases/customerservice/providers/das-head1.zope.net:13930', ''), | |
('/cust/databases/customerservice/replication', ''), | |
('/cust/databases/customerservice/replication/providers', ''), | |
('/cust/databases/customerservice/replication/providers/das-head1.zope.net:13932', ''), | |
('/cust/databases/customerservice/secondary', ''), | |
('/cust/databases/customerservice/secondary/providers', ''), | |
('/cust/databases/customerservice/secondary/replication', ''), | |
('/cust/databases/customerservice/secondary/replication/providers', ''), | |
('/cust/databases/deploy', ''), | |
('/cust/databases/deploy/storage.cust', ''), | |
('/cust/databases/events', '{"digest =>":"..","primary =>":"..","type":"zrs","blobs":false,"version =>":"../.. zrs-version"}'), | |
('/cust/databases/events/deploy', ''), | |
('/cust/databases/events/deploy/storage.cust', ''), | |
('/cust/databases/events/providers', ''), | |
('/cust/databases/events/providers/das-head1.zope.net:15900', ''), | |
('/cust/databases/events/replication', ''), | |
('/cust/databases/events/replication/providers', ''), | |
('/cust/databases/events/replication/providers/das-head1.zope.net:15902', ''), | |
('/cust/databases/events/secondary', ''), | |
('/cust/databases/events/secondary/providers', ''), | |
('/cust/databases/events/secondary/replication', ''), | |
('/cust/databases/events/secondary/replication/providers', ''), | |
('/cust/databases/main', '{"s3":"blobs.zope.com/cust/main:0:9999"}'), | |
('/cust/databases/main/blobs', ''), | |
('/cust/databases/main/blobs/providers', ''), | |
('/cust/databases/main/providers', ''), | |
('/cust/databases/main/providers/das-head1.zope.net:13900', ''), | |
('/cust/databases/main/replication', ''), | |
('/cust/databases/main/replication/providers', ''), | |
('/cust/databases/main/replication/providers/das-head1.zope.net:13902', ''), | |
('/cust/databases/main/secondary', ''), | |
('/cust/databases/main/secondary/providers', ''), | |
('/cust/databases/main/secondary/replication', ''), | |
('/cust/databases/main/secondary/replication/providers', ''), | |
('/cust/databases/sessions', ''), | |
('/cust/databases/sessions/providers', ''), | |
('/cust/databases/sessions/providers/das-head1.zope.net:13960', ''), | |
('/cust/databases/sessions/replication', ''), | |
('/cust/databases/sessions/replication/providers', ''), | |
('/cust/databases/sessions/replication/providers/das-head1.zope.net:13962', ''), | |
('/cust/databases/sessions/secondary', ''), | |
('/cust/databases/sessions/secondary/providers', ''), | |
('/cust/databases/sessions/secondary/replication', ''), | |
('/cust/databases/sessions/secondary/replication/providers', ''), | |
('/cust/databases/subscriptions', '{"digest =>":"..","primary =>":"..","type":"zrs","blobs":false,"version =>":"../.. zrs-version"}'), | |
('/cust/databases/subscriptions/deploy', ''), | |
('/cust/databases/subscriptions/deploy/storage.cust', ''), | |
('/cust/databases/subscriptions/providers', ''), | |
('/cust/databases/subscriptions/providers/das-head1.zope.net:13910', ''), | |
('/cust/databases/subscriptions/replication', ''), | |
('/cust/databases/subscriptions/replication/providers', ''), | |
('/cust/databases/subscriptions/replication/providers/das-head1.zope.net:13912', ''), | |
('/cust/databases/subscriptions/secondary', ''), | |
('/cust/databases/subscriptions/secondary/providers', ''), | |
('/cust/databases/subscriptions/secondary/replication', ''), | |
('/cust/databases/subscriptions/secondary/replication/providers', ''), | |
('/cust/databases/transcoding', '{"digest =>":"..","primary =>":"..","type":"zrs","version =>":"../.. zrs-version"}'), | |
('/cust/databases/transcoding/deploy', ''), | |
('/cust/databases/transcoding/deploy/storage.cust', ''), | |
('/cust/databases/transcoding/providers', ''), | |
('/cust/databases/transcoding/providers/das-head1.zope.net:8100', ''), | |
('/cust/databases/transcoding/replication', ''), | |
('/cust/databases/transcoding/replication/providers', ''), | |
('/cust/databases/transcoding/replication/providers/das-head1.zope.net:8103', ''), | |
('/cust/databases/transcoding/secondary', ''), | |
('/cust/databases/transcoding/secondary/providers', ''), | |
('/cust/databases/transcoding/secondary/replication', ''), | |
('/cust/databases/transcoding/secondary/replication/providers', ''), | |
('/cust/databases/ugc', ''), | |
('/cust/databases/ugc/providers', ''), | |
('/cust/databases/ugc/providers/das-head1.zope.net:13940', ''), | |
('/cust/databases/ugc/replication', ''), | |
('/cust/databases/ugc/replication/providers', ''), | |
('/cust/databases/ugc/replication/providers/das-head1.zope.net:13942', ''), | |
('/cust/databases/ugc/secondary', ''), | |
('/cust/databases/ugc/secondary/providers', ''), | |
('/cust/databases/ugc/secondary/replication', ''), | |
('/cust/databases/ugc/secondary/replication/providers', ''), | |
('/cust/versions', '{"nginx.host":"1.11.3"}'), | |
('/cust/z4m', ''), | |
('/cust/z4m/z4m-sandbox.cust.zope.net', '{"destination":"https://sandbox-cust.admin.zope.net","type":"nginx.host redirect","version =>":"/cust/versions nginx.host"}'), | |
('/cust/z4m/z4m-sandbox.cust.zope.net/deploy', ''), | |
('/cust/z4m/z4m-sandbox.cust.zope.net/deploy/app.cust', ''), | |
('/cust/z4m/z4m.cust.zope.net', '{"destination":"https://z4m-cust.admin.zope.net","type":"nginx.host redirect","version =>":"/cust/versions nginx.host"}'), | |
('/cust/z4m/z4m.cust.zope.net/deploy', ''), | |
('/cust/z4m/z4m.cust.zope.net/deploy/app.cust', ''), | |
) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment