mirror of
https://github.com/ansible/awx.git
synced 2026-05-15 05:17:36 -02:30
Make the inventory_import command respect the default EE and credential
This commit is contained in:
committed by
Shane McDonald
parent
329caad681
commit
a9636426b8
@@ -2,12 +2,15 @@
|
|||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
|
|
||||||
# Python
|
# Python
|
||||||
|
from base64 import b64encode
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import stat
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import tempfile
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
@@ -76,7 +79,24 @@ class AnsibleInventoryLoader(object):
|
|||||||
bargs.extend(['-v', '{0}:{0}:Z'.format(self.source)])
|
bargs.extend(['-v', '{0}:{0}:Z'.format(self.source)])
|
||||||
for key, value in STANDARD_INVENTORY_UPDATE_ENV.items():
|
for key, value in STANDARD_INVENTORY_UPDATE_ENV.items():
|
||||||
bargs.extend(['-e', '{0}={1}'.format(key, value)])
|
bargs.extend(['-e', '{0}={1}'.format(key, value)])
|
||||||
bargs.extend([get_default_execution_environment().image])
|
ee = get_default_execution_environment()
|
||||||
|
bargs.extend([ee.image])
|
||||||
|
|
||||||
|
if ee.cred:
|
||||||
|
if not ee.cred.has_inputs(field_names=('host', 'username', 'password')):
|
||||||
|
raise RuntimeError(f"Registry credential for execution environment `{ee}` is missing either the host, username, or password.")
|
||||||
|
|
||||||
|
host = ee.cred.get_input('host')
|
||||||
|
username = ee.cred.get_input('username')
|
||||||
|
password = ee.cred.get_input('password')
|
||||||
|
token = f"{username}:{password}"
|
||||||
|
auth_data = {'auths': {host: {'auth': b64encode(token.encode('utf-8')).decode('utf-8')}}}
|
||||||
|
self.authfile.write(json.dumps(auth_data, indent=4).encode('utf-8'))
|
||||||
|
bargs.append(f'--authfile={self.authfile.name}')
|
||||||
|
|
||||||
|
if ee.pull:
|
||||||
|
bargs.append(f'--pull={ee.pull}')
|
||||||
|
|
||||||
bargs.extend(['ansible-inventory', '-i', self.source])
|
bargs.extend(['ansible-inventory', '-i', self.source])
|
||||||
bargs.extend(['--playbook-dir', functioning_dir(self.source)])
|
bargs.extend(['--playbook-dir', functioning_dir(self.source)])
|
||||||
if self.verbosity:
|
if self.verbosity:
|
||||||
@@ -110,11 +130,12 @@ class AnsibleInventoryLoader(object):
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
base_args = self.get_base_args()
|
with tempfile.NamedTemporaryFile() as f:
|
||||||
|
self.authfile = f
|
||||||
logger.info('Reading Ansible inventory source: %s', self.source)
|
os.chmod(self.authfile.name, stat.S_IRUSR | stat.S_IWUSR)
|
||||||
|
base_args = self.get_base_args()
|
||||||
return self.command_to_json(base_args)
|
logger.info('Reading Ansible inventory source: %s', self.source)
|
||||||
|
return self.command_to_json(base_args)
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
|
|||||||
Reference in New Issue
Block a user