2026-08-22 08:55:10.042795 | Job console starting 2026-08-22 08:55:10.053246 | Updating git repos 2026-08-22 08:55:10.089958 | Cloning repos into workspace 2026-08-22 08:55:12.852335 | Restoring repo states 2026-08-22 08:55:12.867782 | Merging changes 2026-08-22 08:55:13.710691 | Checking out repos 2026-08-22 08:55:13.760809 | Preparing playbooks 2026-08-22 08:55:15.224928 | Running Ansible setup 2026-08-22 08:55:20.733141 | PRE-RUN START: [trusted : github.com/vexxhost/zuul-config/playbooks/base/pre.yaml@main] 2026-08-22 08:55:21.364067 | 2026-08-22 08:55:21.364282 | PLAY [localhost] 2026-08-22 08:55:21.373069 | 2026-08-22 08:55:21.373154 | TASK [Gathering Facts] 2026-08-22 08:55:22.301672 | localhost | ok 2026-08-22 08:55:22.312321 | 2026-08-22 08:55:22.312400 | TASK [Setup log path fact] 2026-08-22 08:55:22.332887 | localhost | ok 2026-08-22 08:55:22.345312 | 2026-08-22 08:55:22.345414 | TASK [set-zuul-log-path-fact : Set log path for a build] 2026-08-22 08:55:22.373702 | localhost | ok 2026-08-22 08:55:22.384360 | 2026-08-22 08:55:22.384454 | TASK [emit-job-header : Print job information] 2026-08-22 08:55:22.428275 | # Job Information 2026-08-22 08:55:22.428493 | Ansible Version: 2.16.18 2026-08-22 08:55:22.428526 | Job: pre-commit 2026-08-22 08:55:22.428549 | Pipeline: check 2026-08-22 08:55:22.428569 | Executor: 2d72f0692154 2026-08-22 08:55:22.428590 | Triggered by: https://github.com/vexxhost/ansible-collection-kubernetes/pull/295 2026-08-22 08:55:22.428613 | Event ID: 77ded280-9e06-11f1-995b-e0e28f484098 2026-08-22 08:55:22.431571 | 2026-08-22 08:55:22.431643 | LOOP [emit-job-header : Print node information] 2026-08-22 08:55:22.534378 | localhost | ok: 2026-08-22 08:55:22.534940 | localhost | # Node Information 2026-08-22 08:55:22.534971 | localhost | Inventory Hostname: ubuntu-noble 2026-08-22 08:55:22.534994 | localhost | Hostname: np0000190477 2026-08-22 08:55:22.535015 | localhost | Username: zuul 2026-08-22 08:55:22.535038 | localhost | Distro: Ubuntu 24.04 2026-08-22 08:55:22.535059 | localhost | Provider: yul1 2026-08-22 08:55:22.535079 | localhost | Region: ca-ymq-1 2026-08-22 08:55:22.535098 | localhost | Label: ubuntu-noble 2026-08-22 08:55:22.535117 | localhost | Product Name: OpenStack Nova 2026-08-22 08:55:22.535137 | localhost | Interface IP: 199.204.45.47 2026-08-22 08:55:22.549239 | 2026-08-22 08:55:22.549433 | TASK [log-inventory : Ensure Zuul Ansible directory exists] 2026-08-22 08:55:23.001284 | localhost -> localhost | changed 2026-08-22 08:55:23.010612 | 2026-08-22 08:55:23.010749 | TASK [log-inventory : Copy ansible inventory to logs dir] 2026-08-22 08:55:23.940323 | localhost -> localhost | changed 2026-08-22 08:55:23.951453 | 2026-08-22 08:55:23.951535 | PLAY [all] 2026-08-22 08:55:23.961189 | 2026-08-22 08:55:23.961259 | TASK [add-build-sshkey : Check to see if ssh key was already created for this build] 2026-08-22 08:55:24.218626 | ubuntu-noble -> localhost | ok 2026-08-22 08:55:24.231876 | 2026-08-22 08:55:24.231947 | TASK [add-build-sshkey : Create a new key in workspace based on build UUID] 2026-08-22 08:55:24.267899 | ubuntu-noble | ok 2026-08-22 08:55:24.285966 | ubuntu-noble | included: /var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/trusted/project_1/opendev.org/zuul/zuul-jobs/roles/add-build-sshkey/tasks/create-key-and-replace.yaml 2026-08-22 08:55:24.292208 | 2026-08-22 08:55:24.292269 | TASK [add-build-sshkey : Create Temp SSH key] 2026-08-22 08:55:26.026868 | ubuntu-noble -> localhost | Generating public/private rsa key pair. 2026-08-22 08:55:26.027138 | ubuntu-noble -> localhost | Your identification has been saved in /var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/work/dee6384748b94bff92edce035aa37968_id_rsa 2026-08-22 08:55:26.027186 | ubuntu-noble -> localhost | Your public key has been saved in /var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/work/dee6384748b94bff92edce035aa37968_id_rsa.pub 2026-08-22 08:55:26.027218 | ubuntu-noble -> localhost | The key fingerprint is: 2026-08-22 08:55:26.027249 | ubuntu-noble -> localhost | SHA256:JidNebyFmv5KQUhzl0xyKQPjEqm6Uw9fmaQTsgbDw6c zuul-build-sshkey 2026-08-22 08:55:26.027293 | ubuntu-noble -> localhost | The key's randomart image is: 2026-08-22 08:55:26.027323 | ubuntu-noble -> localhost | +---[RSA 3072]----+ 2026-08-22 08:55:26.027357 | ubuntu-noble -> localhost | | ..=.oo+o | 2026-08-22 08:55:26.027388 | ubuntu-noble -> localhost | | .+ =o*+. | 2026-08-22 08:55:26.027416 | ubuntu-noble -> localhost | |o .. o +o+ . | 2026-08-22 08:55:26.027445 | ubuntu-noble -> localhost | |o+o....+ + o | 2026-08-22 08:55:26.027473 | ubuntu-noble -> localhost | | ++o +ooS . | 2026-08-22 08:55:26.027500 | ubuntu-noble -> localhost | |.E= o +* . | 2026-08-22 08:55:26.027527 | ubuntu-noble -> localhost | | + + o o | 2026-08-22 08:55:26.027554 | ubuntu-noble -> localhost | |o o . . | 2026-08-22 08:55:26.027585 | ubuntu-noble -> localhost | | . ... | 2026-08-22 08:55:26.027613 | ubuntu-noble -> localhost | +----[SHA256]-----+ 2026-08-22 08:55:26.027681 | ubuntu-noble -> localhost | ok: Runtime: 0:00:01.305421 2026-08-22 08:55:26.033682 | 2026-08-22 08:55:26.033746 | TASK [add-build-sshkey : Remote setup ssh keys (linux)] 2026-08-22 08:55:26.065938 | ubuntu-noble | ok 2026-08-22 08:55:26.078279 | ubuntu-noble | included: /var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/trusted/project_1/opendev.org/zuul/zuul-jobs/roles/add-build-sshkey/tasks/remote-linux.yaml 2026-08-22 08:55:26.086322 | 2026-08-22 08:55:26.086384 | TASK [add-build-sshkey : Remove previously added zuul-build-sshkey] 2026-08-22 08:55:26.110299 | ubuntu-noble | skipping: Conditional result was False 2026-08-22 08:55:26.120268 | 2026-08-22 08:55:26.120409 | TASK [add-build-sshkey : Enable access via build key on all nodes] 2026-08-22 08:55:26.680802 | ubuntu-noble | changed 2026-08-22 08:55:26.687759 | 2026-08-22 08:55:26.687825 | TASK [add-build-sshkey : Make sure user has a .ssh] 2026-08-22 08:55:26.903449 | ubuntu-noble | ok 2026-08-22 08:55:26.911801 | 2026-08-22 08:55:26.911892 | TASK [add-build-sshkey : Install build private key as SSH key on all nodes] 2026-08-22 08:55:27.441447 | ubuntu-noble | changed 2026-08-22 08:55:27.448031 | 2026-08-22 08:55:27.448186 | TASK [add-build-sshkey : Install build public key as SSH key on all nodes] 2026-08-22 08:55:27.998346 | ubuntu-noble | changed 2026-08-22 08:55:28.139779 | 2026-08-22 08:55:28.139913 | TASK [add-build-sshkey : Remote setup ssh keys (windows)] 2026-08-22 08:55:28.165080 | ubuntu-noble | skipping: Conditional result was False 2026-08-22 08:55:28.176230 | 2026-08-22 08:55:28.176330 | TASK [remove-zuul-sshkey : Remove master key from local agent] 2026-08-22 08:55:28.545954 | ubuntu-noble -> localhost | changed 2026-08-22 08:55:28.559092 | 2026-08-22 08:55:28.559188 | TASK [add-build-sshkey : Add back temp key] 2026-08-22 08:55:28.847318 | ubuntu-noble -> localhost | Identity added: /var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/work/dee6384748b94bff92edce035aa37968_id_rsa (zuul-build-sshkey) 2026-08-22 08:55:28.847487 | ubuntu-noble -> localhost | ok: Runtime: 0:00:00.010649 2026-08-22 08:55:28.852831 | 2026-08-22 08:55:28.852890 | TASK [add-build-sshkey : Verify we can still SSH to all nodes] 2026-08-22 08:55:29.193195 | ubuntu-noble | ok 2026-08-22 08:55:29.199680 | 2026-08-22 08:55:29.199772 | TASK [add-build-sshkey : Verify we can still SSH to all nodes (windows)] 2026-08-22 08:55:29.224753 | ubuntu-noble | skipping: Conditional result was False 2026-08-22 08:55:29.239993 | 2026-08-22 08:55:29.240112 | TASK [prepare-workspace : Start zuul_console daemon.] 2026-08-22 08:55:29.600343 | ubuntu-noble | ok 2026-08-22 08:55:29.660721 | 2026-08-22 08:55:29.660847 | TASK [prepare-workspace : Synchronize src repos to workspace directory.] 2026-08-22 08:55:30.713366 | ubuntu-noble | Output suppressed because no_log was given 2026-08-22 08:55:30.725076 | 2026-08-22 08:55:30.725156 | LOOP [ensure-output-dirs : Empty Zuul Output directories by removing them] 2026-08-22 08:55:30.958181 | ubuntu-noble | ok: "logs" 2026-08-22 08:55:30.958448 | ubuntu-noble | ok: All items complete 2026-08-22 08:55:30.958493 | 2026-08-22 08:55:31.142223 | ubuntu-noble | ok: "artifacts" 2026-08-22 08:55:31.332099 | ubuntu-noble | ok: "docs" 2026-08-22 08:55:31.356123 | 2026-08-22 08:55:31.356709 | LOOP [ensure-output-dirs : Ensure Zuul Output directories exist] 2026-08-22 08:55:31.572496 | ubuntu-noble | changed: "logs" 2026-08-22 08:55:31.756072 | ubuntu-noble | changed: "artifacts" 2026-08-22 08:55:31.968769 | ubuntu-noble | changed: "docs" 2026-08-22 08:55:31.989315 | 2026-08-22 08:55:31.989474 | PLAY RECAP 2026-08-22 08:55:31.989540 | localhost | ok: 6 changed: 2 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-08-22 08:55:31.989585 | ubuntu-noble | ok: 15 changed: 8 unreachable: 0 failed: 0 skipped: 3 rescued: 0 ignored: 0 2026-08-22 08:55:31.989619 | 2026-08-22 08:55:32.210037 | PRE-RUN END RESULT_NORMAL: [trusted : github.com/vexxhost/zuul-config/playbooks/base/pre.yaml@main] 2026-08-22 08:55:32.211460 | PRE-RUN START: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/pre.yaml@main] 2026-08-22 08:55:32.830651 | 2026-08-22 08:55:32.830796 | PLAY [all] 2026-08-22 08:55:32.843740 | 2026-08-22 08:55:32.843869 | TASK [setup-uv : Extract archive] 2026-08-22 08:55:35.126942 | ubuntu-noble | changed 2026-08-22 08:55:35.135850 | 2026-08-22 08:55:35.136095 | TASK [setup-uv : Print version] 2026-08-22 08:55:35.534182 | ubuntu-noble | uv 0.8.13 2026-08-22 08:55:35.684633 | ubuntu-noble | ok: Runtime: 0:00:00.015883 2026-08-22 08:55:35.693936 | 2026-08-22 08:55:35.694028 | PLAY RECAP 2026-08-22 08:55:35.694092 | ubuntu-noble | ok: 2 changed: 2 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-08-22 08:55:35.694128 | 2026-08-22 08:55:35.842257 | PRE-RUN END RESULT_NORMAL: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/pre.yaml@main] 2026-08-22 08:55:35.844557 | RUN START: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/run.yaml@main] 2026-08-22 08:55:36.436199 | 2026-08-22 08:55:36.436336 | PLAY [all] 2026-08-22 08:55:36.448952 | 2026-08-22 08:55:36.449139 | TASK [Run "pre-commit"] 2026-08-22 08:55:37.058970 | ubuntu-noble | Downloading virtualenv (5.1MiB) 2026-08-22 08:55:37.135498 | ubuntu-noble | Downloading virtualenv 2026-08-22 08:55:37.150339 | ubuntu-noble | Installed 10 packages in 14ms 2026-08-22 08:55:37.512131 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. 2026-08-22 08:55:38.408436 | ubuntu-noble | [WARNING] repo `https://github.com/pre-commit/pre-commit-hooks` uses deprecated stage names (commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pre-commit/pre-commit-hooks` will fix this. if it does not -- consider reporting an issue to that repo. 2026-08-22 08:55:38.416266 | ubuntu-noble | [INFO] Initializing environment for https://github.com/psf/black. 2026-08-22 08:55:39.678227 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pycqa/flake8. 2026-08-22 08:55:40.170884 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pycqa/isort. 2026-08-22 08:55:40.719548 | ubuntu-noble | [WARNING] repo `https://github.com/pycqa/isort` uses deprecated stage names (commit, merge-commit, push) which will be removed in a future version. Hint: often `pre-commit autoupdate --repo https://github.com/pycqa/isort` will fix this. if it does not -- consider reporting an issue to that repo. 2026-08-22 08:55:40.721493 | ubuntu-noble | [INFO] Initializing environment for https://github.com/adrienverge/yamllint.git. 2026-08-22 08:55:41.258680 | ubuntu-noble | [INFO] Initializing environment for https://github.com/ansible/ansible-lint.git. 2026-08-22 08:55:41.887738 | ubuntu-noble | [INFO] Initializing environment for https://github.com/ansible/ansible-lint.git:ansible-core>=2.16.0. 2026-08-22 08:55:42.511108 | ubuntu-noble | [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. 2026-08-22 08:55:42.511165 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-08-22 08:55:42.511177 | ubuntu-noble | [INFO] This may take a few minutes... 2026-08-22 08:55:46.292047 | ubuntu-noble | [INFO] Installing environment for https://github.com/psf/black. 2026-08-22 08:55:46.292085 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-08-22 08:55:46.292089 | ubuntu-noble | [INFO] This may take a few minutes... 2026-08-22 08:55:50.515143 | ubuntu-noble | [INFO] Installing environment for https://github.com/pycqa/flake8. 2026-08-22 08:55:50.515181 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-08-22 08:55:50.515186 | ubuntu-noble | [INFO] This may take a few minutes... 2026-08-22 08:55:53.676834 | ubuntu-noble | [INFO] Installing environment for https://github.com/pycqa/isort. 2026-08-22 08:55:53.676948 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-08-22 08:55:53.676971 | ubuntu-noble | [INFO] This may take a few minutes... 2026-08-22 08:55:56.288835 | ubuntu-noble | [INFO] Installing environment for https://github.com/adrienverge/yamllint.git. 2026-08-22 08:55:56.288934 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-08-22 08:55:56.288952 | ubuntu-noble | [INFO] This may take a few minutes... 2026-08-22 08:55:59.495567 | ubuntu-noble | [INFO] Installing environment for https://github.com/ansible/ansible-lint.git. 2026-08-22 08:55:59.495628 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-08-22 08:55:59.495638 | ubuntu-noble | [INFO] This may take a few minutes... 2026-08-22 08:56:09.813732 | ubuntu-noble | fix end of files.........................................................Passed 2026-08-22 08:56:09.866704 | ubuntu-noble | trim trailing whitespace.................................................Passed 2026-08-22 08:56:10.217877 | ubuntu-noble | black....................................................................Passed 2026-08-22 08:56:10.451483 | ubuntu-noble | flake8...................................................................Passed 2026-08-22 08:56:10.592440 | ubuntu-noble | isort....................................................................Passed 2026-08-22 08:56:10.911085 | ubuntu-noble | yamllint.................................................................Passed 2026-08-22 08:57:17.886827 | ubuntu-noble | Ansible-lint.............................................................Passed 2026-08-22 08:57:18.163201 | ubuntu-noble | ok: Runtime: 0:01:41.095980 2026-08-22 08:57:18.165091 | 2026-08-22 08:57:18.165141 | PLAY RECAP 2026-08-22 08:57:18.165189 | ubuntu-noble | ok: 1 changed: 1 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-08-22 08:57:18.165213 | 2026-08-22 08:57:18.327919 | RUN END RESULT_NORMAL: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/run.yaml@main] 2026-08-22 08:57:18.330706 | POST-RUN START: [trusted : github.com/vexxhost/zuul-config/playbooks/base/post.yaml@main] 2026-08-22 08:57:19.304120 | 2026-08-22 08:57:19.304250 | PLAY [all] 2026-08-22 08:57:19.317896 | 2026-08-22 08:57:19.318014 | TASK [fetch-output : Set log path for multiple nodes] 2026-08-22 08:57:19.362469 | ubuntu-noble | skipping: Conditional result was False 2026-08-22 08:57:19.372741 | 2026-08-22 08:57:19.372827 | TASK [fetch-output : Set log path for single node] 2026-08-22 08:57:19.416787 | ubuntu-noble | ok 2026-08-22 08:57:19.423687 | 2026-08-22 08:57:19.423766 | LOOP [fetch-output : Ensure local output dirs] 2026-08-22 08:57:19.843893 | ubuntu-noble -> localhost | ok: "/var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/work/logs" 2026-08-22 08:57:20.063034 | ubuntu-noble -> localhost | changed: "/var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/work/artifacts" 2026-08-22 08:57:20.305033 | ubuntu-noble -> localhost | changed: "/var/lib/zuul/builds/dee6384748b94bff92edce035aa37968/work/docs" 2026-08-22 08:57:20.325199 | 2026-08-22 08:57:20.325401 | LOOP [fetch-output : Collect logs, artifacts and docs] 2026-08-22 08:57:21.003648 | ubuntu-noble | ok 2026-08-22 08:57:21.003903 | ubuntu-noble | changed: All items complete 2026-08-22 08:57:21.003943 | 2026-08-22 08:57:21.516460 | ubuntu-noble | changed: .d..t...... ./ 2026-08-22 08:57:22.003718 | ubuntu-noble | changed: .d..t...... ./ 2026-08-22 08:57:22.025345 | 2026-08-22 08:57:22.025503 | LOOP [merge-output-to-logs : Move artifacts and docs to logs dir] 2026-08-22 08:57:22.478920 | ubuntu-noble -> localhost | ok: Item: artifacts Runtime: 0:00:00.009017 2026-08-22 08:57:22.753482 | ubuntu-noble -> localhost | ok: Item: docs Runtime: 0:00:00.008387 2026-08-22 08:57:22.775730 | 2026-08-22 08:57:22.775892 | PLAY [all] 2026-08-22 08:57:22.784118 | 2026-08-22 08:57:22.784188 | TASK [remove-build-sshkey : Remove the build SSH key from all nodes] 2026-08-22 08:57:23.286837 | ubuntu-noble | changed 2026-08-22 08:57:23.301483 | 2026-08-22 08:57:23.301610 | PLAY RECAP 2026-08-22 08:57:23.301686 | ubuntu-noble | ok: 5 changed: 4 unreachable: 0 failed: 0 skipped: 1 rescued: 0 ignored: 0 2026-08-22 08:57:23.301719 | 2026-08-22 08:57:23.491095 | POST-RUN END RESULT_NORMAL: [trusted : github.com/vexxhost/zuul-config/playbooks/base/post.yaml@main] 2026-08-22 08:57:23.492325 | POST-RUN START: [trusted : github.com/vexxhost/zuul-config/playbooks/base/post-logs.yaml@main] 2026-08-22 08:57:24.103671 | 2026-08-22 08:57:24.103811 | PLAY [localhost] 2026-08-22 08:57:24.115206 | 2026-08-22 08:57:24.115326 | TASK [Generate Zuul manifest] 2026-08-22 08:57:24.147209 | localhost | ok 2026-08-22 08:57:24.164387 | 2026-08-22 08:57:24.164485 | TASK [generate-zuul-manifest : Generate Zuul manifest] 2026-08-22 08:57:24.542179 | localhost | changed 2026-08-22 08:57:24.554038 | 2026-08-22 08:57:24.554124 | TASK [generate-zuul-manifest : Return Zuul manifest URL to Zuul] 2026-08-22 08:57:24.583566 | localhost | ok 2026-08-22 08:57:24.595073 | 2026-08-22 08:57:24.595150 | TASK [Upload logs] 2026-08-22 08:57:24.613710 | localhost | ok 2026-08-22 08:57:24.670536 | 2026-08-22 08:57:24.670663 | TASK [Set zuul-log-path fact] 2026-08-22 08:57:24.691055 | localhost | ok 2026-08-22 08:57:24.703084 | 2026-08-22 08:57:24.703150 | TASK [set-zuul-log-path-fact : Set log path for a build] 2026-08-22 08:57:24.734160 | localhost | ok 2026-08-22 08:57:24.742795 | 2026-08-22 08:57:24.742858 | TASK [upload-logs : Create log directories] 2026-08-22 08:57:25.198427 | localhost | changed 2026-08-22 08:57:25.204606 | 2026-08-22 08:57:25.204696 | TASK [upload-logs : Ensure logs are readable before uploading] 2026-08-22 08:57:25.601333 | localhost -> localhost | ok: Runtime: 0:00:00.005393 2026-08-22 08:57:25.607597 | 2026-08-22 08:57:25.607689 | TASK [upload-logs : Upload logs to log server] 2026-08-22 08:57:26.077935 | localhost | Output suppressed because no_log was given 2026-08-22 08:57:26.083144 | 2026-08-22 08:57:26.083212 | LOOP [upload-logs : Compress console log and json output] 2026-08-22 08:57:26.138785 | localhost | skipping: Conditional result was False 2026-08-22 08:57:26.149250 | localhost | skipping: Conditional result was False 2026-08-22 08:57:26.158275 | 2026-08-22 08:57:26.158442 | LOOP [upload-logs : Upload compressed console log and json output] 2026-08-22 08:57:26.210272 | localhost | skipping: Conditional result was False 2026-08-22 08:57:26.210655 | 2026-08-22 08:57:26.215573 | localhost | skipping: Conditional result was False 2026-08-22 08:57:26.232772 | 2026-08-22 08:57:26.232910 | LOOP [upload-logs : Upload console log and json output]