2026-02-16 21:11:01.977475 | Job console starting 2026-02-16 21:11:01.988093 | Updating git repos 2026-02-16 21:11:02.022449 | Cloning repos into workspace 2026-02-16 21:11:02.074684 | Restoring repo states 2026-02-16 21:11:02.087632 | Merging changes 2026-02-16 21:11:02.711866 | Checking out repos 2026-02-16 21:11:03.030096 | Preparing playbooks 2026-02-16 21:11:05.105929 | Running Ansible setup 2026-02-16 21:11:08.779382 | PRE-RUN START: [trusted : vexxhost.dev/zuul-config/playbooks/base/pre.yaml@main] 2026-02-16 21:11:09.404037 | 2026-02-16 21:11:09.405552 | PLAY [localhost] 2026-02-16 21:11:09.413210 | 2026-02-16 21:11:09.413279 | TASK [Gathering Facts] 2026-02-16 21:11:10.279676 | localhost | ok 2026-02-16 21:11:10.286736 | 2026-02-16 21:11:10.286813 | TASK [Setup log path fact] 2026-02-16 21:11:10.305401 | localhost | ok 2026-02-16 21:11:10.316889 | 2026-02-16 21:11:10.317012 | TASK [set-zuul-log-path-fact : Set log path for a build] 2026-02-16 21:11:10.347037 | localhost | ok 2026-02-16 21:11:10.354890 | 2026-02-16 21:11:10.354958 | TASK [emit-job-header : Print job information] 2026-02-16 21:11:10.395388 | # Job Information 2026-02-16 21:11:10.395611 | Ansible Version: 2.16.15 2026-02-16 21:11:10.395681 | Job: pre-commit 2026-02-16 21:11:10.395727 | Pipeline: check 2026-02-16 21:11:10.395770 | Executor: 3a2793d2bd32 2026-02-16 21:11:10.395812 | Triggered by: https://github.com/vexxhost/ansible-collection-kubernetes/pull/229 2026-02-16 21:11:10.395865 | Event ID: cb3b7370-0b7b-11f1-9c52-05f14bb964d8 2026-02-16 21:11:10.399862 | 2026-02-16 21:11:10.399925 | LOOP [emit-job-header : Print node information] 2026-02-16 21:11:10.502586 | localhost | ok: 2026-02-16 21:11:10.506096 | localhost | # Node Information 2026-02-16 21:11:10.506149 | localhost | Inventory Hostname: ubuntu-noble 2026-02-16 21:11:10.506181 | localhost | Hostname: np0000155796 2026-02-16 21:11:10.506207 | localhost | Username: zuul 2026-02-16 21:11:10.506236 | localhost | Distro: Ubuntu 24.04 2026-02-16 21:11:10.506374 | localhost | Provider: yul1 2026-02-16 21:11:10.506413 | localhost | Region: ca-ymq-1 2026-02-16 21:11:10.506441 | localhost | Label: ubuntu-noble 2026-02-16 21:11:10.506468 | localhost | Product Name: OpenStack Nova 2026-02-16 21:11:10.506493 | localhost | Interface IP: 199.204.45.222 2026-02-16 21:11:10.522862 | 2026-02-16 21:11:10.523081 | TASK [log-inventory : Ensure Zuul Ansible directory exists] 2026-02-16 21:11:11.030731 | localhost -> localhost | changed 2026-02-16 21:11:11.040298 | 2026-02-16 21:11:11.040492 | TASK [log-inventory : Copy ansible inventory to logs dir] 2026-02-16 21:11:12.023810 | localhost -> localhost | changed 2026-02-16 21:11:12.033752 | 2026-02-16 21:11:12.033864 | PLAY [all] 2026-02-16 21:11:12.051366 | 2026-02-16 21:11:12.051619 | TASK [add-build-sshkey : Check to see if ssh key was already created for this build] 2026-02-16 21:11:12.300885 | ubuntu-noble -> localhost | ok 2026-02-16 21:11:12.311807 | 2026-02-16 21:11:12.311882 | TASK [add-build-sshkey : Create a new key in workspace based on build UUID] 2026-02-16 21:11:12.345403 | ubuntu-noble | ok 2026-02-16 21:11:12.400519 | ubuntu-noble | included: /var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/trusted/project_1/opendev.org/zuul/zuul-jobs/roles/add-build-sshkey/tasks/create-key-and-replace.yaml 2026-02-16 21:11:12.407272 | 2026-02-16 21:11:12.407337 | TASK [add-build-sshkey : Create Temp SSH key] 2026-02-16 21:11:13.395580 | ubuntu-noble -> localhost | Generating public/private rsa key pair. 2026-02-16 21:11:13.395791 | ubuntu-noble -> localhost | Your identification has been saved in /var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/work/3d544b234048496493e6264fe21980c0_id_rsa 2026-02-16 21:11:13.395834 | ubuntu-noble -> localhost | Your public key has been saved in /var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/work/3d544b234048496493e6264fe21980c0_id_rsa.pub 2026-02-16 21:11:13.395866 | ubuntu-noble -> localhost | The key fingerprint is: 2026-02-16 21:11:13.395896 | ubuntu-noble -> localhost | SHA256:ExHONoDUZSAAKyGqP8epX2ADOA1ChTfW4MFA3/MRfoY zuul-build-sshkey 2026-02-16 21:11:13.395937 | ubuntu-noble -> localhost | The key's randomart image is: 2026-02-16 21:11:13.395967 | ubuntu-noble -> localhost | +---[RSA 3072]----+ 2026-02-16 21:11:13.396003 | ubuntu-noble -> localhost | |O=**=oo+=. | 2026-02-16 21:11:13.396034 | ubuntu-noble -> localhost | |+Bo=+oo=o. | 2026-02-16 21:11:13.396062 | ubuntu-noble -> localhost | |* =o.o E*o | 2026-02-16 21:11:13.396090 | ubuntu-noble -> localhost | |o. . o.+o | 2026-02-16 21:11:13.396117 | ubuntu-noble -> localhost | |. + .S | 2026-02-16 21:11:13.396144 | ubuntu-noble -> localhost | | . o + . | 2026-02-16 21:11:13.396171 | ubuntu-noble -> localhost | | o + . | 2026-02-16 21:11:13.396197 | ubuntu-noble -> localhost | | + . | 2026-02-16 21:11:13.396227 | ubuntu-noble -> localhost | | ... | 2026-02-16 21:11:13.396255 | ubuntu-noble -> localhost | +----[SHA256]-----+ 2026-02-16 21:11:13.396320 | ubuntu-noble -> localhost | ok: Runtime: 0:00:00.554801 2026-02-16 21:11:13.402144 | 2026-02-16 21:11:13.402208 | TASK [add-build-sshkey : Remote setup ssh keys (linux)] 2026-02-16 21:11:13.436424 | ubuntu-noble | ok 2026-02-16 21:11:13.447859 | ubuntu-noble | included: /var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/trusted/project_1/opendev.org/zuul/zuul-jobs/roles/add-build-sshkey/tasks/remote-linux.yaml 2026-02-16 21:11:13.456449 | 2026-02-16 21:11:13.456517 | TASK [add-build-sshkey : Remove previously added zuul-build-sshkey] 2026-02-16 21:11:13.481801 | ubuntu-noble | skipping: Conditional result was False 2026-02-16 21:11:13.490745 | 2026-02-16 21:11:13.490831 | TASK [add-build-sshkey : Enable access via build key on all nodes] 2026-02-16 21:11:14.052404 | ubuntu-noble | changed 2026-02-16 21:11:14.058904 | 2026-02-16 21:11:14.058967 | TASK [add-build-sshkey : Make sure user has a .ssh] 2026-02-16 21:11:14.311385 | ubuntu-noble | ok 2026-02-16 21:11:14.318249 | 2026-02-16 21:11:14.318319 | TASK [add-build-sshkey : Install build private key as SSH key on all nodes] 2026-02-16 21:11:14.870550 | ubuntu-noble | changed 2026-02-16 21:11:14.876369 | 2026-02-16 21:11:14.876435 | TASK [add-build-sshkey : Install build public key as SSH key on all nodes] 2026-02-16 21:11:15.449889 | ubuntu-noble | changed 2026-02-16 21:11:15.456565 | 2026-02-16 21:11:15.456632 | TASK [add-build-sshkey : Remote setup ssh keys (windows)] 2026-02-16 21:11:15.481961 | ubuntu-noble | skipping: Conditional result was False 2026-02-16 21:11:15.495095 | 2026-02-16 21:11:15.495161 | TASK [remove-zuul-sshkey : Remove master key from local agent] 2026-02-16 21:11:15.898418 | ubuntu-noble -> localhost | changed 2026-02-16 21:11:15.916263 | 2026-02-16 21:11:15.916537 | TASK [add-build-sshkey : Add back temp key] 2026-02-16 21:11:16.248387 | ubuntu-noble -> localhost | Identity added: /var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/work/3d544b234048496493e6264fe21980c0_id_rsa (zuul-build-sshkey) 2026-02-16 21:11:16.248633 | ubuntu-noble -> localhost | ok: Runtime: 0:00:00.014842 2026-02-16 21:11:16.256297 | 2026-02-16 21:11:16.256385 | TASK [add-build-sshkey : Verify we can still SSH to all nodes] 2026-02-16 21:11:16.633355 | ubuntu-noble | ok 2026-02-16 21:11:16.648404 | 2026-02-16 21:11:16.648548 | TASK [add-build-sshkey : Verify we can still SSH to all nodes (windows)] 2026-02-16 21:11:16.675322 | ubuntu-noble | skipping: Conditional result was False 2026-02-16 21:11:16.699124 | 2026-02-16 21:11:16.699996 | TASK [prepare-workspace : Start zuul_console daemon.] 2026-02-16 21:11:17.086163 | ubuntu-noble | ok 2026-02-16 21:11:17.093392 | 2026-02-16 21:11:17.093460 | TASK [prepare-workspace : Synchronize src repos to workspace directory.] 2026-02-16 21:11:18.148973 | ubuntu-noble | Output suppressed because no_log was given 2026-02-16 21:11:18.161110 | 2026-02-16 21:11:18.161198 | LOOP [ensure-output-dirs : Empty Zuul Output directories by removing them] 2026-02-16 21:11:18.390315 | ubuntu-noble | ok: "logs" 2026-02-16 21:11:18.390629 | ubuntu-noble | ok: All items complete 2026-02-16 21:11:18.390674 | 2026-02-16 21:11:18.626526 | ubuntu-noble | ok: "artifacts" 2026-02-16 21:11:18.779326 | ubuntu-noble | ok: "docs" 2026-02-16 21:11:18.796669 | 2026-02-16 21:11:18.796865 | LOOP [ensure-output-dirs : Ensure Zuul Output directories exist] 2026-02-16 21:11:19.024840 | ubuntu-noble | changed: "logs" 2026-02-16 21:11:19.228423 | ubuntu-noble | changed: "artifacts" 2026-02-16 21:11:19.415927 | ubuntu-noble | changed: "docs" 2026-02-16 21:11:19.430062 | 2026-02-16 21:11:19.430360 | PLAY RECAP 2026-02-16 21:11:19.430475 | localhost | ok: 6 changed: 2 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-02-16 21:11:19.430546 | ubuntu-noble | ok: 15 changed: 8 unreachable: 0 failed: 0 skipped: 3 rescued: 0 ignored: 0 2026-02-16 21:11:19.430596 | 2026-02-16 21:11:19.572280 | PRE-RUN END RESULT_NORMAL: [trusted : vexxhost.dev/zuul-config/playbooks/base/pre.yaml@main] 2026-02-16 21:11:19.574526 | PRE-RUN START: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/pre.yaml@main] 2026-02-16 21:11:20.204444 | 2026-02-16 21:11:20.204586 | PLAY [all] 2026-02-16 21:11:20.217566 | 2026-02-16 21:11:20.217645 | TASK [setup-uv : Extract archive] 2026-02-16 21:11:22.605660 | ubuntu-noble | changed 2026-02-16 21:11:22.612722 | 2026-02-16 21:11:22.612802 | TASK [setup-uv : Print version] 2026-02-16 21:11:21.873863 | ubuntu-noble | uv 0.8.13 2026-02-16 21:11:23.153767 | ubuntu-noble | ok: Runtime: 0:00:00.009408 2026-02-16 21:11:23.161796 | 2026-02-16 21:11:23.161885 | PLAY RECAP 2026-02-16 21:11:23.161955 | ubuntu-noble | ok: 2 changed: 2 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-02-16 21:11:23.161985 | 2026-02-16 21:11:23.279472 | PRE-RUN END RESULT_NORMAL: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/pre.yaml@main] 2026-02-16 21:11:23.282660 | RUN START: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/run.yaml@main] 2026-02-16 21:11:23.968001 | 2026-02-16 21:11:23.968150 | PLAY [all] 2026-02-16 21:11:23.980384 | 2026-02-16 21:11:23.980455 | TASK [Run "pre-commit"] 2026-02-16 21:11:23.474143 | ubuntu-noble | Downloading virtualenv (5.6MiB) 2026-02-16 21:11:23.567999 | ubuntu-noble | Downloading virtualenv 2026-02-16 21:11:23.581022 | ubuntu-noble | Installed 9 packages in 12ms 2026-02-16 21:11:23.991441 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. 2026-02-16 21:11:24.467451 | 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-02-16 21:11:24.471234 | ubuntu-noble | [INFO] Initializing environment for https://github.com/psf/black. 2026-02-16 21:11:24.946999 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pycqa/flake8. 2026-02-16 21:11:25.295042 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pycqa/isort. 2026-02-16 21:11:26.827260 | 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-02-16 21:11:26.828481 | ubuntu-noble | [INFO] Initializing environment for https://github.com/adrienverge/yamllint.git. 2026-02-16 21:11:27.184792 | ubuntu-noble | [INFO] Initializing environment for https://github.com/ansible/ansible-lint.git. 2026-02-16 21:11:27.733978 | ubuntu-noble | [INFO] Initializing environment for https://github.com/ansible/ansible-lint.git:ansible-core>=2.16.0. 2026-02-16 21:11:28.619121 | ubuntu-noble | [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. 2026-02-16 21:11:28.619171 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-02-16 21:11:28.619188 | ubuntu-noble | [INFO] This may take a few minutes... 2026-02-16 21:11:32.449789 | ubuntu-noble | [INFO] Installing environment for https://github.com/psf/black. 2026-02-16 21:11:32.449843 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-02-16 21:11:32.449848 | ubuntu-noble | [INFO] This may take a few minutes... 2026-02-16 21:11:37.095425 | ubuntu-noble | [INFO] Installing environment for https://github.com/pycqa/flake8. 2026-02-16 21:11:37.095464 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-02-16 21:11:37.095469 | ubuntu-noble | [INFO] This may take a few minutes... 2026-02-16 21:11:40.240058 | ubuntu-noble | [INFO] Installing environment for https://github.com/pycqa/isort. 2026-02-16 21:11:40.240106 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-02-16 21:11:40.240113 | ubuntu-noble | [INFO] This may take a few minutes... 2026-02-16 21:11:42.871574 | ubuntu-noble | [INFO] Installing environment for https://github.com/adrienverge/yamllint.git. 2026-02-16 21:11:42.871601 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-02-16 21:11:42.871606 | ubuntu-noble | [INFO] This may take a few minutes... 2026-02-16 21:11:46.268614 | ubuntu-noble | [INFO] Installing environment for https://github.com/ansible/ansible-lint.git. 2026-02-16 21:11:46.268658 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-02-16 21:11:46.268663 | ubuntu-noble | [INFO] This may take a few minutes... 2026-02-16 21:11:57.433222 | ubuntu-noble | fix end of files.........................................................Passed 2026-02-16 21:11:57.488711 | ubuntu-noble | trim trailing whitespace.................................................Passed 2026-02-16 21:11:57.842086 | ubuntu-noble | black....................................................................Passed 2026-02-16 21:11:58.083815 | ubuntu-noble | flake8...................................................................Passed 2026-02-16 21:11:58.228382 | ubuntu-noble | isort....................................................................Passed 2026-02-16 21:11:58.787977 | ubuntu-noble | yamllint.................................................................Passed 2026-02-16 21:12:57.794641 | ubuntu-noble | Ansible-lint.............................................................Passed 2026-02-16 21:12:58.079103 | ubuntu-noble | ok: Runtime: 0:01:34.587854 2026-02-16 21:12:58.082191 | 2026-02-16 21:12:58.082255 | PLAY RECAP 2026-02-16 21:12:58.082315 | ubuntu-noble | ok: 1 changed: 1 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-02-16 21:12:58.082350 | 2026-02-16 21:12:58.200924 | RUN END RESULT_NORMAL: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/run.yaml@main] 2026-02-16 21:12:58.203846 | POST-RUN START: [trusted : vexxhost.dev/zuul-config/playbooks/base/post.yaml@main] 2026-02-16 21:12:58.822632 | 2026-02-16 21:12:58.822778 | PLAY [all] 2026-02-16 21:12:58.834573 | 2026-02-16 21:12:58.834649 | TASK [fetch-output : Set log path for multiple nodes] 2026-02-16 21:12:58.880103 | ubuntu-noble | skipping: Conditional result was False 2026-02-16 21:12:58.889775 | 2026-02-16 21:12:58.889849 | TASK [fetch-output : Set log path for single node] 2026-02-16 21:12:58.944749 | ubuntu-noble | ok 2026-02-16 21:12:58.950732 | 2026-02-16 21:12:58.950806 | LOOP [fetch-output : Ensure local output dirs] 2026-02-16 21:12:59.376751 | ubuntu-noble -> localhost | ok: "/var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/work/logs" 2026-02-16 21:12:59.590605 | ubuntu-noble -> localhost | changed: "/var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/work/artifacts" 2026-02-16 21:12:59.822142 | ubuntu-noble -> localhost | changed: "/var/lib/zuul/builds/3d544b234048496493e6264fe21980c0/work/docs" 2026-02-16 21:12:59.835546 | 2026-02-16 21:12:59.835709 | LOOP [fetch-output : Collect logs, artifacts and docs] 2026-02-16 21:13:00.473982 | ubuntu-noble | changed: .d..t...... ./ 2026-02-16 21:13:00.474247 | ubuntu-noble | changed: All items complete 2026-02-16 21:13:00.474275 | 2026-02-16 21:13:00.921667 | ubuntu-noble | changed: .d..t...... ./ 2026-02-16 21:13:01.372728 | ubuntu-noble | changed: .d..t...... ./ 2026-02-16 21:13:01.395217 | 2026-02-16 21:13:01.395352 | LOOP [merge-output-to-logs : Move artifacts and docs to logs dir] 2026-02-16 21:13:01.811660 | ubuntu-noble -> localhost | ok: Item: artifacts Runtime: 0:00:00.007499 2026-02-16 21:13:02.029446 | ubuntu-noble -> localhost | ok: Item: docs Runtime: 0:00:00.007564 2026-02-16 21:13:02.047855 | 2026-02-16 21:13:02.047948 | PLAY [all] 2026-02-16 21:13:02.055786 | 2026-02-16 21:13:02.055860 | TASK [remove-build-sshkey : Remove the build SSH key from all nodes] 2026-02-16 21:13:02.520355 | ubuntu-noble | changed 2026-02-16 21:13:02.527334 | 2026-02-16 21:13:02.527381 | PLAY RECAP 2026-02-16 21:13:02.527428 | ubuntu-noble | ok: 5 changed: 4 unreachable: 0 failed: 0 skipped: 1 rescued: 0 ignored: 0 2026-02-16 21:13:02.527450 | 2026-02-16 21:13:02.669175 | POST-RUN END RESULT_NORMAL: [trusted : vexxhost.dev/zuul-config/playbooks/base/post.yaml@main] 2026-02-16 21:13:02.670460 | POST-RUN START: [trusted : vexxhost.dev/zuul-config/playbooks/base/post-logs.yaml@main] 2026-02-16 21:13:03.288942 | 2026-02-16 21:13:03.301432 | PLAY [localhost] 2026-02-16 21:13:03.315673 | 2026-02-16 21:13:03.315768 | TASK [Generate Zuul manifest] 2026-02-16 21:13:03.338106 | localhost | ok 2026-02-16 21:13:03.354696 | 2026-02-16 21:13:03.354777 | TASK [generate-zuul-manifest : Generate Zuul manifest] 2026-02-16 21:13:03.691418 | localhost | changed 2026-02-16 21:13:03.703430 | 2026-02-16 21:13:03.703510 | TASK [generate-zuul-manifest : Return Zuul manifest URL to Zuul] 2026-02-16 21:13:03.735529 | localhost | ok 2026-02-16 21:13:03.743568 | 2026-02-16 21:13:03.743630 | TASK [Upload logs] 2026-02-16 21:13:03.766294 | localhost | ok 2026-02-16 21:13:03.826479 | 2026-02-16 21:13:03.826593 | TASK [Set zuul-log-path fact] 2026-02-16 21:13:03.849856 | localhost | ok 2026-02-16 21:13:03.861880 | 2026-02-16 21:13:03.861974 | TASK [set-zuul-log-path-fact : Set log path for a build] 2026-02-16 21:13:03.898488 | localhost | ok 2026-02-16 21:13:03.907461 | 2026-02-16 21:13:03.907550 | TASK [upload-logs : Create log directories] 2026-02-16 21:13:04.314098 | localhost | changed 2026-02-16 21:13:04.320094 | 2026-02-16 21:13:04.320162 | TASK [upload-logs : Ensure logs are readable before uploading] 2026-02-16 21:13:04.738458 | localhost -> localhost | ok: Runtime: 0:00:00.004526 2026-02-16 21:13:04.746344 | 2026-02-16 21:13:04.746449 | TASK [upload-logs : Upload logs to log server] 2026-02-16 21:13:05.232727 | localhost | Output suppressed because no_log was given 2026-02-16 21:13:05.237906 | 2026-02-16 21:13:05.237969 | LOOP [upload-logs : Compress console log and json output] 2026-02-16 21:13:05.279507 | localhost | skipping: Conditional result was False 2026-02-16 21:13:05.286131 | localhost | skipping: Conditional result was False 2026-02-16 21:13:05.301671 | 2026-02-16 21:13:05.301828 | LOOP [upload-logs : Upload compressed console log and json output] 2026-02-16 21:13:05.339596 | localhost | skipping: Conditional result was False 2026-02-16 21:13:05.339892 | 2026-02-16 21:13:05.344994 | localhost | skipping: Conditional result was False 2026-02-16 21:13:05.355366 | 2026-02-16 21:13:05.355528 | LOOP [upload-logs : Upload console log and json output]