mirror of
https://github.com/ansible/awx.git
synced 2026-02-16 02:30:01 -03:30
Allow YAML as a CLI import format
This changset allows the import of YAML formatted resources. The CLI user can indicate which format to use with the `-f, --format` option. The CLI help text has been amended to reflect the new feature. The AWX CLI `export` subcommand offers the option of formatting the output as YAML or JSON, so it makes sense that the `import` subcommand reflects this. A simple test is also provided. In order to ease the task of testing commands that import resources by reading the stdin, the CLI has been extended to allow specifying an alternative file descriptor for stdin, similarly to stdout and stderr.
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
import io
|
||||
import json
|
||||
|
||||
import yaml
|
||||
|
||||
from awxkit.api.pages import Page
|
||||
from awxkit.api.pages.users import Users, User
|
||||
from awxkit.cli import CLI
|
||||
from awxkit.cli.format import format_response
|
||||
from awxkit.cli.resource import Import
|
||||
|
||||
|
||||
def test_json_empty_list():
|
||||
@@ -44,3 +47,26 @@ def test_yaml_list():
|
||||
page = Users.from_json(users)
|
||||
formatted = format_response(page, fmt='yaml')
|
||||
assert yaml.safe_load(formatted) == users
|
||||
|
||||
|
||||
def test_yaml_import():
|
||||
class MockedV2:
|
||||
def import_assets(self, data):
|
||||
self._parsed_data = data
|
||||
|
||||
def _dummy_authenticate():
|
||||
pass
|
||||
|
||||
yaml_fd = io.StringIO(
|
||||
"""
|
||||
workflow_job_templates:
|
||||
- name: Workflow1
|
||||
"""
|
||||
)
|
||||
cli = CLI(stdin=yaml_fd)
|
||||
cli.parse_args(['--conf.format', 'yaml'])
|
||||
cli.v2 = MockedV2()
|
||||
cli.authenticate = _dummy_authenticate
|
||||
|
||||
Import().handle(cli, None)
|
||||
assert cli.v2._parsed_data['workflow_job_templates'][0]['name']
|
||||
|
||||
Reference in New Issue
Block a user