mirror of
https://github.com/ansible/awx.git
synced 2026-03-11 06:29:31 -02:30
More inventory update containerization fixes
This commit is contained in:
committed by
Shane McDonald
parent
14a8e3da5e
commit
69dcbe0865
@@ -2546,13 +2546,9 @@ class RunInventoryUpdate(BaseTask):
|
|||||||
are accomplished by the inventory source injectors (in this method)
|
are accomplished by the inventory source injectors (in this method)
|
||||||
or custom credential type injectors (in main run method).
|
or custom credential type injectors (in main run method).
|
||||||
"""
|
"""
|
||||||
base_env = super(RunInventoryUpdate, self).build_env(
|
env = super(RunInventoryUpdate, self).build_env(
|
||||||
inventory_update, private_data_dir, isolated,
|
inventory_update, private_data_dir, isolated,
|
||||||
private_data_files=private_data_files)
|
private_data_files=private_data_files)
|
||||||
# TODO: this is able to run by turning off isolation
|
|
||||||
# the goal is to run it a container instead
|
|
||||||
env = dict(os.environ.items())
|
|
||||||
env.update(base_env)
|
|
||||||
|
|
||||||
if private_data_files is None:
|
if private_data_files is None:
|
||||||
private_data_files = {}
|
private_data_files = {}
|
||||||
@@ -2623,17 +2619,20 @@ class RunInventoryUpdate(BaseTask):
|
|||||||
args = ['ansible-inventory', '--list', '--export']
|
args = ['ansible-inventory', '--list', '--export']
|
||||||
|
|
||||||
# Add arguments for the source inventory file/script/thing
|
# Add arguments for the source inventory file/script/thing
|
||||||
source_location = self.pseudo_build_inventory(inventory_update, private_data_dir)
|
rel_path = self.pseudo_build_inventory(inventory_update, private_data_dir)
|
||||||
|
container_location = os.path.join('/runner', rel_path) # TODO: make container paths elegant
|
||||||
|
source_location = os.path.join(private_data_dir, rel_path)
|
||||||
|
|
||||||
args.append('-i')
|
args.append('-i')
|
||||||
args.append(source_location)
|
args.append(container_location)
|
||||||
|
|
||||||
args.append('--output')
|
args.append('--output')
|
||||||
args.append(os.path.join('/runner', 'artifacts', 'output.json'))
|
args.append(os.path.join('/runner', 'artifacts', 'output.json'))
|
||||||
|
|
||||||
if os.path.isdir(source_location):
|
if os.path.isdir(source_location):
|
||||||
playbook_dir = source_location
|
playbook_dir = container_location
|
||||||
else:
|
else:
|
||||||
playbook_dir = os.path.dirname(source_location)
|
playbook_dir = os.path.dirname(container_location)
|
||||||
args.extend(['--playbook-dir', playbook_dir])
|
args.extend(['--playbook-dir', playbook_dir])
|
||||||
|
|
||||||
if inventory_update.verbosity:
|
if inventory_update.verbosity:
|
||||||
@@ -2665,9 +2664,9 @@ class RunInventoryUpdate(BaseTask):
|
|||||||
f.write(content)
|
f.write(content)
|
||||||
os.chmod(inventory_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
|
os.chmod(inventory_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
|
||||||
|
|
||||||
inventory_path = os.path.join('/runner', injector.filename)
|
rel_path = injector.filename
|
||||||
elif src == 'scm':
|
elif src == 'scm':
|
||||||
inventory_path = os.path.join('/runner', 'project', inventory_update.source_path)
|
rel_path = os.path.join('project', inventory_update.source_path)
|
||||||
elif src == 'custom':
|
elif src == 'custom':
|
||||||
handle, inventory_path = tempfile.mkstemp(dir=private_data_dir)
|
handle, inventory_path = tempfile.mkstemp(dir=private_data_dir)
|
||||||
f = os.fdopen(handle, 'w')
|
f = os.fdopen(handle, 'w')
|
||||||
@@ -2676,7 +2675,9 @@ class RunInventoryUpdate(BaseTask):
|
|||||||
f.write(inventory_update.source_script.script)
|
f.write(inventory_update.source_script.script)
|
||||||
f.close()
|
f.close()
|
||||||
os.chmod(inventory_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
|
os.chmod(inventory_path, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
|
||||||
return inventory_path
|
|
||||||
|
rel_path = os.path.split(inventory_path)[-1]
|
||||||
|
return rel_path
|
||||||
|
|
||||||
def build_cwd(self, inventory_update, private_data_dir):
|
def build_cwd(self, inventory_update, private_data_dir):
|
||||||
'''
|
'''
|
||||||
@@ -2685,9 +2686,10 @@ class RunInventoryUpdate(BaseTask):
|
|||||||
- SCM, where source needs to live in the project folder
|
- SCM, where source needs to live in the project folder
|
||||||
'''
|
'''
|
||||||
src = inventory_update.source
|
src = inventory_update.source
|
||||||
|
container_dir = '/runner' # TODO: make container paths elegant
|
||||||
if src == 'scm' and inventory_update.source_project_update:
|
if src == 'scm' and inventory_update.source_project_update:
|
||||||
return os.path.join(private_data_dir, 'project')
|
return os.path.join(container_dir, 'project')
|
||||||
return private_data_dir
|
return container_dir
|
||||||
|
|
||||||
def build_playbook_path_relative_to_cwd(self, inventory_update, private_data_dir):
|
def build_playbook_path_relative_to_cwd(self, inventory_update, private_data_dir):
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -2090,7 +2090,8 @@ class TestInventoryUpdateCredentials(TestJobExecution):
|
|||||||
|
|
||||||
assert '-i' in ' '.join(args)
|
assert '-i' in ' '.join(args)
|
||||||
script = args[args.index('-i') + 1]
|
script = args[args.index('-i') + 1]
|
||||||
with open(script, 'r') as f:
|
host_script = script.replace('/runner', private_data_dir)
|
||||||
|
with open(host_script, 'r') as f:
|
||||||
assert f.read() == inventory_update.source_script.script
|
assert f.read() == inventory_update.source_script.script
|
||||||
assert env['FOO'] == 'BAR'
|
assert env['FOO'] == 'BAR'
|
||||||
if with_credential:
|
if with_credential:
|
||||||
|
|||||||
Reference in New Issue
Block a user