diff --git a/docker/kolla-ansible/kolla_zookeeper.py b/docker/kolla-ansible/kolla_zookeeper.py new file mode 100644 index 0000000000..da692605a5 --- /dev/null +++ b/docker/kolla-ansible/kolla_zookeeper.py @@ -0,0 +1,66 @@ +#!/usr/bin/python + +# Copyright 2015 Mirantis, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +import contextlib + +import kazoo + + +@contextlib.contextmanager +def zk_connection(zk_host, zk_port): + zk = kazoo.client.KazooClient(hosts='{}:{}'.format(zk_host, zk_port)) + zk.start() + yield zk + zk.stop() + + +def main(): + module = AnsibleModule( + argument_spec=dict( + zk_host=dict(required=True, type='str'), + zk_port=dict(required=True, type='str'), + path=dict(required=True, type='str'), + value=dict(required=False, default=None, type='str') + ) + ) + + try: + zk_host = module.params.pop('zk_host') + zk_port = module.params.pop('zk_port') + path = module.params.pop('path') + value = module.params.pop('value') + + changed = False + with zk_connection(zk_host, zk_port) as zk: + try: + zk.get(path) + except kazoo.exceptions.NoNodeError: + if value is None: + zk.create(path) + else: + zk.create(path, value=value.encode()) + changed = True + + module.exit_json(changed=changed) + except Exception as e: + module.exit_json(failed=True, changed=True, msg=e) + + +# import module snippets +from ansible.module_utils.basic import * + +if __name__ == '__main__': + main()