#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from __future__ import print_function
|
|
from ansible.module_utils.basic import *
|
|
|
|
DOCUMENTATION = '''
|
|
---
|
|
module: container_file_exists
|
|
author: Edoardo Putti
|
|
short_description: Return whether a file is present in the container
|
|
description:
|
|
- Check if the given path exists on the given container
|
|
options:
|
|
name:
|
|
required: true
|
|
description:
|
|
- Name of the container
|
|
path:
|
|
required: true
|
|
description:
|
|
- path of the file to check
|
|
'''
|
|
|
|
def check_file_in_container(path):
|
|
import os
|
|
import json
|
|
result = dict(
|
|
exists = False,
|
|
failed = False,
|
|
path = path,
|
|
)
|
|
if os.path.exists(path):
|
|
result['exists'] = True
|
|
else:
|
|
result['exists'] = True
|
|
|
|
print(json.dumps(result))
|
|
return 0
|
|
|
|
def main():
|
|
module = AnsibleModule(
|
|
argument_spec = dict(
|
|
name = dict(
|
|
required = True,
|
|
type = 'str',
|
|
),
|
|
path = dict(
|
|
required = True,
|
|
type = 'str',
|
|
),
|
|
),
|
|
)
|
|
|
|
try:
|
|
import lxc
|
|
|
|
except ImportError:
|
|
module.fail_json(
|
|
changed = False,
|
|
failed = True,
|
|
msg = 'Error importing lxc, is python-lxc installed?',
|
|
)
|
|
|
|
container_name = module.params.get('name')
|
|
file_path = module.params.get('path')
|
|
|
|
result = {}
|
|
result['name'] = container_name
|
|
result['path'] = file_path
|
|
|
|
if container_name in lxc.list_containers():
|
|
|
|
container = lxc.Container(container_name)
|
|
|
|
file_exists = container.attach_wait(
|
|
check_file_in_container,
|
|
file_path,
|
|
env_policy = lxc.LXC_ATTACH_CLEAR_ENV,
|
|
)
|
|
|
|
else:
|
|
result['changed'] = False
|
|
result['failed'] = True
|
|
result['msg'] = "Target container does not exists"
|
|
|
|
module.exit_json(**result)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|