aboutsummaryrefslogtreecommitdiff
path: root/ansible/library
diff options
context:
space:
mode:
authorMark Goddard <mark@stackhpc.com>2022-02-14 14:30:06 +0000
committerMark Goddard <mark@stackhpc.com>2022-02-14 14:30:36 +0000
commit2f6a8fa2336fe1a0c102fed0219fa341545b4e7f (patch)
tree7f4eb2e6e04daa125bdea7384c1b60fb18cf8814 /ansible/library
parentda1670241ba54529f30bd0639792bd8c7831be81 (diff)
downloadkolla-ansible-2f6a8fa2336fe1a0c102fed0219fa341545b4e7f.tar.gz
kolla-ansible-2f6a8fa2336fe1a0c102fed0219fa341545b4e7f.zip
Remove bslurp module
This module was used in the Ceph deployment support, which was removed long ago. Change-Id: I599ef47199bc68e8f5cf62709157d3f096ac68a9
Diffstat (limited to 'ansible/library')
-rw-r--r--ansible/library/bslurp.py215
1 files changed, 0 insertions, 215 deletions
diff --git a/ansible/library/bslurp.py b/ansible/library/bslurp.py
deleted file mode 100644
index a59c769c4..000000000
--- a/ansible/library/bslurp.py
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2015 Sam Yaple
-#
-# 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.
-
-# This module has been relicensed from the source below:
-# https://github.com/SamYaple/yaodu/blob/master/ansible/library/bslurp
-
-import base64
-import hashlib
-import os
-import traceback
-import zlib
-
-from ansible.module_utils.basic import AnsibleModule
-
-DOCUMENTATION = '''
----
-module: bslurp
-short_description: Slurps a file from a remote node
-description:
- - Used for fetching a binary blob containing the file, then push that file
- to other hosts.
-options:
- src:
- description:
- - File to fetch. When dest is used, src is expected to be a str with data
- required: True
- type: str
- compress:
- description:
- - Compress file with zlib
- default: True
- type: bool
- dest:
- description:
- - Where to write out binary blob
- required: False
- type: str
- mode:
- description:
- - Destination file permissions
- default: '0644'
- type: str
- sha1:
- description:
- - sha1 hash of the underlying data
- default: None
- type: bool
- sha256:
- description:
- - sha256 hash of the underlying data
- default: None
- type: bool
-author: Sam Yaple
-'''
-
-EXAMPLES = '''
-Distribute a file from single to many hosts:
-
-- hosts: web_servers
- tasks:
- - name: Pull in web config
- bslurp: src="/path/to/file"
- register: file_data
- run_once: True
- - name: Push if changed
- bslurp:
- src: "{{ file_data.content }}"
- dest: "{{ file_data.source }}"
- mode: "{{ file_data.mode }}"
- sha1: "{{ file_data.sha1 }}"
-
-Distribute multiple files from single to many hosts:
-
-- hosts: web_servers
- tasks:
- - name: Pull in web config
- bslurp: src="{{ item }}"
- with_items:
- - "/path/to/file1"
- - "/path/to/file2"
- - "/path/to/file3"
- register: file_data
- run_once: True
- - name: Push if changed
- bslurp:
- src: "{{ item.content }}"
- dest: "{{ item.source }}"
- mode: "{{ item.mode }}"
- sha1: "{{ item.sha1 }}"
- with_items: file_data.results
-
-Distribute a file to many hosts without compression; Change
-permissions on dest:
-
-- hosts: web_servers
- tasks:
- - name: Pull in web config
- bslurp: src="/path/to/file"
- register: file_data
- run_once: True
- - name: Push if changed
- bslurp:
- src: "{{ file_data.content }}"
- dest: "/new/path/to/file"
- mode: "0777"
- compress: False
- sha1: "{{ file_data.sha1 }}"
-'''
-
-
-def copy_from_host(module):
- compress = module.params.get('compress')
- src = module.params.get('src')
-
- if not os.path.exists(src):
- module.fail_json(msg="file not found: {}".format(src))
- if not os.access(src, os.R_OK):
- module.fail_json(msg="file is not readable: {}".format(src))
-
- mode = oct(os.stat(src).st_mode & 0o777)
-
- with open(src, 'rb') as f:
- raw_data = f.read()
-
- sha1 = hashlib.sha1(raw_data).hexdigest()
- sha256 = hashlib.sha256(raw_data).hexdigest()
-
- data = zlib.compress(raw_data) if compress else raw_data
-
- module.exit_json(content=base64.b64encode(data), sha1=sha1, sha256=sha256,
- mode=mode, source=src)
-
-
-def copy_to_host(module):
- compress = module.params.get('compress')
- dest = module.params.get('dest')
- mode = int(module.params.get('mode'), 0)
- sha1 = module.params.get('sha1')
- sha256 = module.params.get('sha256')
- src = module.params.get('src')
-
- data = base64.b64decode(src)
- raw_data = zlib.decompress(data) if compress else data
-
- if sha256:
- if os.path.exists(dest):
- if os.access(dest, os.R_OK):
- with open(dest, 'rb') as f:
- if hashlib.sha256(f.read()).hexdigest() == sha256:
- module.exit_json(changed=False)
- else:
- module.exit_json(failed=True, changed=False,
- msg='file is not accessible: {}'.format(dest))
-
- if sha256 != hashlib.sha256(raw_data).hexdigest():
- module.exit_json(failed=True, changed=False,
- msg='sha256 sum does not match data')
- elif sha1:
- if os.path.exists(dest):
- if os.access(dest, os.R_OK):
- with open(dest, 'rb') as f:
- if hashlib.sha1(f.read()).hexdigest() == sha1:
- module.exit_json(changed=False)
- else:
- module.exit_json(failed=True, changed=False,
- msg='file is not accessible: {}'.format(dest))
-
- if sha1 != hashlib.sha1(raw_data).hexdigest():
- module.exit_json(failed=True, changed=False,
- msg='sha1 sum does not match data')
-
- with os.fdopen(os.open(dest, os.O_WRONLY | os.O_CREAT, mode), 'wb') as f:
- f.write(raw_data)
-
- module.exit_json(changed=True)
-
-
-def main():
- argument_spec = dict(
- compress=dict(default=True, type='bool'),
- dest=dict(type='str'),
- mode=dict(default='0644', type='str'),
- sha1=dict(default=None, type='str'),
- sha256=dict(default=None, type='str'),
- src=dict(required=True, type='str')
- )
- module = AnsibleModule(argument_spec)
-
- dest = module.params.get('dest')
-
- try:
- if dest:
- copy_to_host(module)
- else:
- copy_from_host(module)
- except Exception:
- module.exit_json(failed=True, changed=True,
- msg=repr(traceback.format_exc()))
-
-
-if __name__ == '__main__':
- main()