diff options
| author | Jenkins <jenkins@review.openstack.org> | 2015-11-13 19:28:01 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2015-11-13 19:28:01 +0000 |
| commit | 4650d813415aadfc0ebdf72f71fd38fa9e6936d0 (patch) | |
| tree | 4e20f639b028487acce8f7412df8e03f6232cf64 | |
| parent | 84b6f7edc47e4f454f13e3055ab8611ccafa2544 (diff) | |
| parent | 1dfb79111690a43fbf780119c153e096be9c122e (diff) | |
| download | kolla-4650d813415aadfc0ebdf72f71fd38fa9e6936d0.tar.gz kolla-4650d813415aadfc0ebdf72f71fd38fa9e6936d0.zip | |
Merge "Add ZooKeeper support in kolla-ansible"
| -rw-r--r-- | docker/kolla-ansible/kolla_zookeeper.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/docker/kolla-ansible/kolla_zookeeper.py b/docker/kolla-ansible/kolla_zookeeper.py new file mode 100644 index 000000000..da692605a --- /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() |
