Merge pull request #7808 from zedr/feat-yaml-import

Allow YAML as a CLI import format

Reviewed-by: https://github.com/apps/softwarefactory-project-zuul
This commit is contained in:
softwarefactory-project-zuul[bot]
2020-08-11 14:31:01 +00:00
committed by GitHub
4 changed files with 39 additions and 5 deletions

View File

@@ -70,9 +70,10 @@ class CLI(object):
subparsers = {}
original_action = None
def __init__(self, stdout=sys.stdout, stderr=sys.stderr):
def __init__(self, stdout=sys.stdout, stderr=sys.stderr, stdin=sys.stdin):
self.stdout = stdout
self.stderr = stderr
self.stdin = stdin
def get_config(self, key):
"""Helper method for looking up the value of a --conf.xyz flag"""

View File

@@ -40,7 +40,7 @@ def add_authentication_arguments(parser, env):
def add_output_formatting_arguments(parser, env):
formatting = parser.add_argument_group('output formatting')
formatting = parser.add_argument_group('input/output formatting')
formatting.add_argument(
'-f',
@@ -49,7 +49,7 @@ def add_output_formatting_arguments(parser, env):
choices=FORMATTERS.keys(),
default=env.get('TOWER_FORMAT', 'json'),
help=(
'specify an output format'
'specify a format for the input and output'
),
)
formatting.add_argument(

View File

@@ -1,8 +1,9 @@
import yaml
import json
import os
import sys
from awxkit import api, config
from awxkit.exceptions import ImportExportError
from awxkit.utils import to_str
from awxkit.api.pages import Page
from awxkit.api.pages.api import EXPORTABLE_RESOURCES
@@ -135,7 +136,13 @@ class Import(CustomCommand):
parser.print_help()
raise SystemExit()
data = json.load(sys.stdin)
fmt = client.get_config('format')
if fmt == 'json':
data = json.load(client.stdin)
elif fmt == 'yaml':
data = yaml.safe_load(client.stdin)
else:
raise ImportExportError("Unsupported format for Import: " + fmt)
client.authenticate()
client.v2.import_assets(data)