From 6edf1443db41ad0ebbf63be57111494b8eac5fbd Mon Sep 17 00:00:00 2001 From: chouseknecht Date: Wed, 2 Mar 2016 13:31:15 -0500 Subject: [PATCH] Adding docker_files module proposal --- docs/proposals/docker/docker_files_module.md | 159 +++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 docs/proposals/docker/docker_files_module.md diff --git a/docs/proposals/docker/docker_files_module.md b/docs/proposals/docker/docker_files_module.md new file mode 100644 index 00000000000..3970584f0d3 --- /dev/null +++ b/docs/proposals/docker/docker_files_module.md @@ -0,0 +1,159 @@ +# Docker_Files Modules Proposal + +## Purpose and Scope + +The purpose of docker_files is to provide for retrieving a file or folder from a container's file system, +inserting a file or folder into a container, exporting a container's entire filesystem as a tar archive, or +retrieving a list of changed files from a container's file system. + +Docker_files will manage a container using docker-py to communicate with either a local or remote API. It will +support API versions >= 1.14. API connection details will be handled externally in a shared utility module similar to +how other cloud modules operate. + +## Parameters + +Docker_files accepts the parameters listed below. API connection parameters will be part of a shared utility module +as mentioned above. + +``` +diff: + description: + - Provide a list of container names or IDs. For each container a list of changed files and directories found on the + container's file system will be returned. Diff is mutually exclusive from all other options except event_type. + Use event_type to choose which events to include in the output. + default: null + +export: + description: + - Provide a container name or ID. The container's file system will be exported to a tar archive. Use dest + to provide a path for the archive on the local file system. If the output file already exists, it will not be + overwritten. Use the force option to overwrite an existing archive. + default: null + +dest: + description: + - Destination path of copied files. If the destination is a container file system, precede the path with a + container name or ID + ':'. For example, C(mycontainer:/path/to/file.txt). If the destination path does not + exist, it will be created. If the destination path exists on a the local filesystem, it will not be overwritten. + Use the force option to overwrite existing files on the local filesystem. + default: null + +force: + description: + - Overwrite existing files on the local filesystem. + default: false + +follow_link: + description: + - Follow symbolic links in the src path. If src is local and file is a symbolic link, the symbolic link, not the + target is copied by default. To copy the link target and not the link, set follow_link to true. + default: false + +event_type: + description: + - Select the specific event type to list in the diff output. + choices: + - all + - add + - delete + - change + default: all + +src: + description: + - The source path of file(s) to be copied. If source files are found on the container's file system, precede the + path with the container name or ID + ':'. For example, C(mycontainer:/path/to/files). + default: null + +``` + +## Examples + +``` +- name: Copy files from the local file system to a container's file system + docker_files: + src: /tmp/rpm + dest: mycontainer:/tmp + follow_links: yes + +- name: Copy files from the container to the local filesystem and overwrite existing files + docker_files: + src: container1:/var/lib/data + dest: /tmp/container1/data + force: yes + +- name: Export container filesystem + docker_file: + export: container1 + dest: /tmp/conainer1.tar + force: yes + +- name: List all differences for multiple containers. + docker_files: + diff: + - mycontainer1 + - mycontainer2 + +- name: Included changed files only in diff output + docker_files: + diff: + - mycontainer1 + event_type: change +``` + +## Returns + +Returned from diff: + +``` +{ + changed: false, + failed: false, + rc: 0, + results: { + mycontainer1: [ + { state: 'C', path: '/dev' }, + { state: 'A', path: '/dev/kmsg' }, + { state: 'C', path: '/etc' }, + { state: 'A', path: '/etc/mtab' } + ], + mycontainer2: [ + { state: 'C', path: '/foo' }, + { state: 'A', path: '/foo/bar.txt' } + ] + } +} +``` + +Returned when copying files: + +``` +{ + changed: true, + failed: false, + rc: 0, + results: { + src: /tmp/rpms, + dest: mycontainer:/tmp + files_copied: [ + 'file1.txt', + 'file2.jpg' + ] + } +} +``` + +Return when exporting container filesystem: + +``` +{ + changed: true, + failed: false, + rc: 0, + results: { + src: container_name, + dest: local/path/archive_name.tar + } +} + +```