import etcd3
import json
etcd = etcd3.client(host='127.0.0.1', port=2379)

# 基础操作 put get delete
# [1]获取当前所有存储的key

print(etcd.put('demo/bar1', 'doot'))
print(etcd.put('demo/bar2', 'doot'))
list_of_kv = list(etcd.get_all())
for value, kv_msg in list_of_kv:
    print("key:{}, value:{}" .format(kv_msg.key, value))


# [2]获取带有前缀的键
list_of_kv = list(etcd.get_prefix('demo/'))
for value, kv_msg in list_of_kv:
    print("key:{}, value:{}" .format(kv_msg.key, value))
# [3]删除带有前缀的键
res = etcd.delete_prefix('demo/')
print(res)
list_of_kv = list(etcd.get_prefix('demo/'))
for value, kv_msg in list_of_kv:
    print("key:{}, value:{}" .format(kv_msg.key, value))

# [4]普通的get与delete
res = etcd.put('bar')
value, kv_msg = etcd.get('bar')
print(value)
print(etcd.delete('bar'))
print(etcd.get('bar'))
etcd.close()







# # locks
# lock = etcd.lock('thing')
# lock.release()


# # 事务使用
# # compare——要进行的比较列表
# # success – 如果所有比较都为真,则要执行的操作列表
# # failure – 任何比较为假时要执行的操作列表
# etcd.transaction(
#     compare=[
#         etcd.transactions.value('/doot/testing') == 'doot',
#         etcd.transactions.version('/doot/testing') > 0,
#     ],
#     success=[
#         etcd.transactions.put('/doot/testing', 'success'),
#     ],
#     failure=[
#         etcd.transactions.put('/doot/testing', 'failure'),
#     ]
# )

# # lease使用
# etcd.lease(ttl , lease_id=无)
# # 创建新租约。
# # 如果租约到期,附加到该租约的所有密钥都将过期并删除。可以发送租约保持活动消息以刷新 ttl。
# # 返回lease对象

# # 撤销租约
# etcd.revoke_lease(lease_id)