2026-06-17 20:44:07.883175 | Job console starting 2026-06-17 20:44:07.898690 | Updating git repos 2026-06-17 20:44:07.939861 | Cloning repos into workspace 2026-06-17 20:44:08.468325 | Restoring repo states 2026-06-17 20:44:08.482584 | Merging changes 2026-06-17 20:44:09.103861 | Checking out repos 2026-06-17 20:44:09.438310 | Preparing playbooks 2026-06-17 20:44:13.210684 | Running Ansible setup 2026-06-17 20:44:18.547114 | PRE-RUN START: [trusted : github.com/vexxhost/zuul-config/playbooks/base/pre.yaml@main] 2026-06-17 20:44:19.185148 | 2026-06-17 20:44:19.306066 | PLAY [localhost] 2026-06-17 20:44:19.320690 | 2026-06-17 20:44:19.320816 | TASK [Gathering Facts] 2026-06-17 20:44:20.469325 | localhost | ok 2026-06-17 20:44:20.482354 | 2026-06-17 20:44:20.482469 | TASK [Setup log path fact] 2026-06-17 20:44:20.502297 | localhost | ok 2026-06-17 20:44:20.516125 | 2026-06-17 20:44:20.516252 | TASK [set-zuul-log-path-fact : Set log path for a build] 2026-06-17 20:44:20.551375 | localhost | ok 2026-06-17 20:44:20.562749 | 2026-06-17 20:44:20.563039 | TASK [emit-job-header : Print job information] 2026-06-17 20:44:20.604510 | # Job Information 2026-06-17 20:44:20.604834 | Ansible Version: 2.16.18 2026-06-17 20:44:20.605106 | Job: pre-commit 2026-06-17 20:44:20.605157 | Pipeline: check 2026-06-17 20:44:20.605185 | Executor: 2d72f0692154 2026-06-17 20:44:20.605207 | Triggered by: https://github.com/vexxhost/ansible-collection-kubernetes/pull/282 2026-06-17 20:44:20.605231 | Event ID: 283e2390-6a8d-11f1-9014-500de74c1245 2026-06-17 20:44:20.613339 | 2026-06-17 20:44:20.613487 | LOOP [emit-job-header : Print node information] 2026-06-17 20:44:20.716118 | localhost | ok: 2026-06-17 20:44:20.716286 | localhost | # Node Information 2026-06-17 20:44:20.716326 | localhost | Inventory Hostname: ubuntu-noble 2026-06-17 20:44:20.716357 | localhost | Hostname: np0000181674 2026-06-17 20:44:20.716383 | localhost | Username: zuul 2026-06-17 20:44:20.716408 | localhost | Distro: Ubuntu 24.04 2026-06-17 20:44:20.716429 | localhost | Provider: yul1 2026-06-17 20:44:20.716450 | localhost | Region: ca-ymq-1 2026-06-17 20:44:20.716471 | localhost | Label: ubuntu-noble 2026-06-17 20:44:20.716491 | localhost | Product Name: OpenStack Nova 2026-06-17 20:44:20.716513 | localhost | Interface IP: 199.19.213.37 2026-06-17 20:44:20.734541 | 2026-06-17 20:44:20.734727 | TASK [log-inventory : Ensure Zuul Ansible directory exists] 2026-06-17 20:44:21.336638 | localhost -> localhost | changed 2026-06-17 20:44:21.346432 | 2026-06-17 20:44:21.346502 | TASK [log-inventory : Copy ansible inventory to logs dir] 2026-06-17 20:44:22.513514 | localhost -> localhost | changed 2026-06-17 20:44:22.521731 | 2026-06-17 20:44:22.521832 | PLAY [all] 2026-06-17 20:44:22.535218 | 2026-06-17 20:44:22.535348 | TASK [add-build-sshkey : Check to see if ssh key was already created for this build] 2026-06-17 20:44:22.797674 | ubuntu-noble -> localhost | ok 2026-06-17 20:44:23.129247 | 2026-06-17 20:44:23.129380 | TASK [add-build-sshkey : Create a new key in workspace based on build UUID] 2026-06-17 20:44:23.153144 | ubuntu-noble | ok 2026-06-17 20:44:23.168000 | ubuntu-noble | included: /var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/trusted/project_1/opendev.org/zuul/zuul-jobs/roles/add-build-sshkey/tasks/create-key-and-replace.yaml 2026-06-17 20:44:23.174368 | 2026-06-17 20:44:23.174431 | TASK [add-build-sshkey : Create Temp SSH key] 2026-06-17 20:44:25.012196 | ubuntu-noble -> localhost | Generating public/private rsa key pair. 2026-06-17 20:44:25.012847 | ubuntu-noble -> localhost | Your identification has been saved in /var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/work/13a316d87d6846b38e507896980f465b_id_rsa 2026-06-17 20:44:25.012905 | ubuntu-noble -> localhost | Your public key has been saved in /var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/work/13a316d87d6846b38e507896980f465b_id_rsa.pub 2026-06-17 20:44:25.012940 | ubuntu-noble -> localhost | The key fingerprint is: 2026-06-17 20:44:25.013032 | ubuntu-noble -> localhost | SHA256:I1bES57nAr65BHkZNxeG41ljDMOcCgCjsdU2fA7A6fw zuul-build-sshkey 2026-06-17 20:44:25.013080 | ubuntu-noble -> localhost | The key's randomart image is: 2026-06-17 20:44:25.013165 | ubuntu-noble -> localhost | +---[RSA 3072]----+ 2026-06-17 20:44:25.013286 | ubuntu-noble -> localhost | |+o+* ++=o | 2026-06-17 20:44:25.013334 | ubuntu-noble -> localhost | |.=o B ..Oo=. | 2026-06-17 20:44:25.013365 | ubuntu-noble -> localhost | |oo . *.=+B.. | 2026-06-17 20:44:25.013396 | ubuntu-noble -> localhost | | o .+=*o. | 2026-06-17 20:44:25.013426 | ubuntu-noble -> localhost | | .o.=.So | 2026-06-17 20:44:25.013455 | ubuntu-noble -> localhost | | E+..... | 2026-06-17 20:44:25.013484 | ubuntu-noble -> localhost | | .o . | 2026-06-17 20:44:25.013512 | ubuntu-noble -> localhost | | .o | 2026-06-17 20:44:25.013544 | ubuntu-noble -> localhost | | .. | 2026-06-17 20:44:25.013574 | ubuntu-noble -> localhost | +----[SHA256]-----+ 2026-06-17 20:44:25.013641 | ubuntu-noble -> localhost | ok: Runtime: 0:00:01.421135 2026-06-17 20:44:25.019706 | 2026-06-17 20:44:25.019781 | TASK [add-build-sshkey : Remote setup ssh keys (linux)] 2026-06-17 20:44:25.051801 | ubuntu-noble | ok 2026-06-17 20:44:25.064250 | ubuntu-noble | included: /var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/trusted/project_1/opendev.org/zuul/zuul-jobs/roles/add-build-sshkey/tasks/remote-linux.yaml 2026-06-17 20:44:25.074255 | 2026-06-17 20:44:25.074315 | TASK [add-build-sshkey : Remove previously added zuul-build-sshkey] 2026-06-17 20:44:25.099518 | ubuntu-noble | skipping: Conditional result was False 2026-06-17 20:44:25.109269 | 2026-06-17 20:44:25.109363 | TASK [add-build-sshkey : Enable access via build key on all nodes] 2026-06-17 20:44:25.661539 | ubuntu-noble | changed 2026-06-17 20:44:25.810065 | 2026-06-17 20:44:25.810204 | TASK [add-build-sshkey : Make sure user has a .ssh] 2026-06-17 20:44:26.039224 | ubuntu-noble | ok 2026-06-17 20:44:26.046155 | 2026-06-17 20:44:26.046221 | TASK [add-build-sshkey : Install build private key as SSH key on all nodes] 2026-06-17 20:44:26.629087 | ubuntu-noble | changed 2026-06-17 20:44:26.638546 | 2026-06-17 20:44:26.638737 | TASK [add-build-sshkey : Install build public key as SSH key on all nodes] 2026-06-17 20:44:27.230141 | ubuntu-noble | changed 2026-06-17 20:44:27.237064 | 2026-06-17 20:44:27.237161 | TASK [add-build-sshkey : Remote setup ssh keys (windows)] 2026-06-17 20:44:27.260974 | ubuntu-noble | skipping: Conditional result was False 2026-06-17 20:44:27.844126 | 2026-06-17 20:44:27.844309 | TASK [remove-zuul-sshkey : Remove master key from local agent] 2026-06-17 20:44:28.250617 | ubuntu-noble -> localhost | changed 2026-06-17 20:44:28.262330 | 2026-06-17 20:44:28.262432 | TASK [add-build-sshkey : Add back temp key] 2026-06-17 20:44:28.546195 | ubuntu-noble -> localhost | Identity added: /var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/work/13a316d87d6846b38e507896980f465b_id_rsa (zuul-build-sshkey) 2026-06-17 20:44:28.546503 | ubuntu-noble -> localhost | ok: Runtime: 0:00:00.013763 2026-06-17 20:44:28.553254 | 2026-06-17 20:44:28.553320 | TASK [add-build-sshkey : Verify we can still SSH to all nodes] 2026-06-17 20:44:28.914826 | ubuntu-noble | ok 2026-06-17 20:44:28.921545 | 2026-06-17 20:44:28.921613 | TASK [add-build-sshkey : Verify we can still SSH to all nodes (windows)] 2026-06-17 20:44:28.945307 | ubuntu-noble | skipping: Conditional result was False 2026-06-17 20:44:28.977052 | 2026-06-17 20:44:28.977193 | TASK [prepare-workspace : Start zuul_console daemon.] 2026-06-17 20:44:29.343082 | ubuntu-noble | ok 2026-06-17 20:44:29.469714 | 2026-06-17 20:44:29.469856 | TASK [prepare-workspace : Synchronize src repos to workspace directory.] 2026-06-17 20:44:30.648068 | ubuntu-noble | Output suppressed because no_log was given 2026-06-17 20:44:30.676706 | 2026-06-17 20:44:30.676827 | LOOP [ensure-output-dirs : Empty Zuul Output directories by removing them] 2026-06-17 20:44:30.917872 | ubuntu-noble | ok: "logs" 2026-06-17 20:44:30.918714 | ubuntu-noble | ok: All items complete 2026-06-17 20:44:30.918758 | 2026-06-17 20:44:31.110510 | ubuntu-noble | ok: "artifacts" 2026-06-17 20:44:31.297300 | ubuntu-noble | ok: "docs" 2026-06-17 20:44:31.313492 | 2026-06-17 20:44:31.313635 | LOOP [ensure-output-dirs : Ensure Zuul Output directories exist] 2026-06-17 20:44:31.531369 | ubuntu-noble | changed: "logs" 2026-06-17 20:44:31.719396 | ubuntu-noble | changed: "artifacts" 2026-06-17 20:44:32.007254 | ubuntu-noble | changed: "docs" 2026-06-17 20:44:32.025499 | 2026-06-17 20:44:32.025624 | PLAY RECAP 2026-06-17 20:44:32.025690 | localhost | ok: 6 changed: 2 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-06-17 20:44:32.025736 | ubuntu-noble | ok: 15 changed: 8 unreachable: 0 failed: 0 skipped: 3 rescued: 0 ignored: 0 2026-06-17 20:44:32.025772 | 2026-06-17 20:44:32.161450 | PRE-RUN END RESULT_NORMAL: [trusted : github.com/vexxhost/zuul-config/playbooks/base/pre.yaml@main] 2026-06-17 20:44:32.163741 | PRE-RUN START: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/pre.yaml@main] 2026-06-17 20:44:32.793882 | 2026-06-17 20:44:32.794031 | PLAY [all] 2026-06-17 20:44:32.807725 | 2026-06-17 20:44:32.807894 | TASK [setup-uv : Extract archive] 2026-06-17 20:44:35.322345 | ubuntu-noble | changed 2026-06-17 20:44:35.328937 | 2026-06-17 20:44:35.329114 | TASK [setup-uv : Print version] 2026-06-17 20:44:35.685595 | ubuntu-noble | uv 0.8.13 2026-06-17 20:44:35.865796 | ubuntu-noble | ok: Runtime: 0:00:00.015180 2026-06-17 20:44:35.872989 | 2026-06-17 20:44:35.873078 | PLAY RECAP 2026-06-17 20:44:35.873124 | ubuntu-noble | ok: 2 changed: 2 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-06-17 20:44:35.873149 | 2026-06-17 20:44:36.041151 | PRE-RUN END RESULT_NORMAL: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/pre.yaml@main] 2026-06-17 20:44:36.042290 | RUN START: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/run.yaml@main] 2026-06-17 20:44:36.747118 | 2026-06-17 20:44:36.747263 | PLAY [all] 2026-06-17 20:44:36.764933 | 2026-06-17 20:44:36.765141 | TASK [Run "pre-commit"] 2026-06-17 20:44:37.376902 | ubuntu-noble | Downloading virtualenv (4.3MiB) 2026-06-17 20:44:37.469196 | ubuntu-noble | Downloading virtualenv 2026-06-17 20:44:37.482275 | ubuntu-noble | Installed 10 packages in 12ms 2026-06-17 20:44:37.857875 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. 2026-06-17 20:44:38.394790 | 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-06-17 20:44:38.400021 | ubuntu-noble | [INFO] Initializing environment for https://github.com/psf/black. 2026-06-17 20:44:38.922563 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pycqa/flake8. 2026-06-17 20:44:39.332297 | ubuntu-noble | [INFO] Initializing environment for https://github.com/pycqa/isort. 2026-06-17 20:44:39.822617 | 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-06-17 20:44:39.823849 | ubuntu-noble | [INFO] Initializing environment for https://github.com/adrienverge/yamllint.git. 2026-06-17 20:44:40.286991 | ubuntu-noble | [INFO] Initializing environment for https://github.com/ansible/ansible-lint.git. 2026-06-17 20:44:40.879877 | ubuntu-noble | [INFO] Initializing environment for https://github.com/ansible/ansible-lint.git:ansible-core>=2.16.0. 2026-06-17 20:44:41.457448 | ubuntu-noble | [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. 2026-06-17 20:44:41.457523 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-06-17 20:44:41.457536 | ubuntu-noble | [INFO] This may take a few minutes... 2026-06-17 20:44:45.814528 | ubuntu-noble | [INFO] Installing environment for https://github.com/psf/black. 2026-06-17 20:44:45.814647 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-06-17 20:44:45.814680 | ubuntu-noble | [INFO] This may take a few minutes... 2026-06-17 20:44:50.342994 | ubuntu-noble | [INFO] Installing environment for https://github.com/pycqa/flake8. 2026-06-17 20:44:50.343078 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-06-17 20:44:50.343089 | ubuntu-noble | [INFO] This may take a few minutes... 2026-06-17 20:44:53.556899 | ubuntu-noble | [INFO] Installing environment for https://github.com/pycqa/isort. 2026-06-17 20:44:53.556986 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-06-17 20:44:53.557010 | ubuntu-noble | [INFO] This may take a few minutes... 2026-06-17 20:44:56.245218 | ubuntu-noble | [INFO] Installing environment for https://github.com/adrienverge/yamllint.git. 2026-06-17 20:44:56.245308 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-06-17 20:44:56.245321 | ubuntu-noble | [INFO] This may take a few minutes... 2026-06-17 20:44:59.658665 | ubuntu-noble | [INFO] Installing environment for https://github.com/ansible/ansible-lint.git. 2026-06-17 20:44:59.658731 | ubuntu-noble | [INFO] Once installed this environment will be reused. 2026-06-17 20:44:59.658737 | ubuntu-noble | [INFO] This may take a few minutes... 2026-06-17 20:45:09.590792 | ubuntu-noble | fix end of files.........................................................Passed 2026-06-17 20:45:09.654197 | ubuntu-noble | trim trailing whitespace.................................................Passed 2026-06-17 20:45:09.990743 | ubuntu-noble | black....................................................................Passed 2026-06-17 20:45:10.224958 | ubuntu-noble | flake8...................................................................Passed 2026-06-17 20:45:10.361823 | ubuntu-noble | isort....................................................................Passed 2026-06-17 20:45:10.735478 | ubuntu-noble | yamllint.................................................................Passed 2026-06-17 20:46:37.996618 | ubuntu-noble | Ansible-lint.............................................................Passed 2026-06-17 20:46:38.336664 | ubuntu-noble | ok: Runtime: 0:02:00.959542 2026-06-17 20:46:38.339124 | 2026-06-17 20:46:38.339191 | PLAY RECAP 2026-06-17 20:46:38.339247 | ubuntu-noble | ok: 1 changed: 1 unreachable: 0 failed: 0 skipped: 0 rescued: 0 ignored: 0 2026-06-17 20:46:38.339279 | 2026-06-17 20:46:38.478300 | RUN END RESULT_NORMAL: [untrusted : github.com/vexxhost/zuul-jobs/playbooks/pre-commit/run.yaml@main] 2026-06-17 20:46:38.480940 | POST-RUN START: [trusted : github.com/vexxhost/zuul-config/playbooks/base/post.yaml@main] 2026-06-17 20:46:39.116692 | 2026-06-17 20:46:39.116828 | PLAY [all] 2026-06-17 20:46:39.129747 | 2026-06-17 20:46:39.129879 | TASK [fetch-output : Set log path for multiple nodes] 2026-06-17 20:46:39.174608 | ubuntu-noble | skipping: Conditional result was False 2026-06-17 20:46:39.185816 | 2026-06-17 20:46:39.186005 | TASK [fetch-output : Set log path for single node] 2026-06-17 20:46:39.230141 | ubuntu-noble | ok 2026-06-17 20:46:39.238046 | 2026-06-17 20:46:39.238151 | LOOP [fetch-output : Ensure local output dirs] 2026-06-17 20:46:39.639106 | ubuntu-noble -> localhost | ok: "/var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/work/logs" 2026-06-17 20:46:39.841431 | ubuntu-noble -> localhost | changed: "/var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/work/artifacts" 2026-06-17 20:46:40.042618 | ubuntu-noble -> localhost | changed: "/var/lib/zuul/builds/13a316d87d6846b38e507896980f465b/work/docs" 2026-06-17 20:46:40.060373 | 2026-06-17 20:46:40.060528 | LOOP [fetch-output : Collect logs, artifacts and docs] 2026-06-17 20:46:40.702621 | ubuntu-noble | changed: .d..t...... ./ 2026-06-17 20:46:40.703128 | ubuntu-noble | changed: All items complete 2026-06-17 20:46:40.703175 | 2026-06-17 20:46:41.171147 | ubuntu-noble | changed: .d..t...... ./ 2026-06-17 20:46:41.627246 | ubuntu-noble | changed: .d..t...... ./ 2026-06-17 20:46:41.647612 | 2026-06-17 20:46:41.647739 | LOOP [merge-output-to-logs : Move artifacts and docs to logs dir] 2026-06-17 20:46:42.095651 | ubuntu-noble -> localhost | ok: Item: artifacts Runtime: 0:00:00.009063 2026-06-17 20:46:42.330313 | ubuntu-noble -> localhost | ok: Item: docs Runtime: 0:00:00.008483 2026-06-17 20:46:42.352597 | 2026-06-17 20:46:42.352728 | PLAY [all] 2026-06-17 20:46:42.363898 | 2026-06-17 20:46:42.364096 | TASK [remove-build-sshkey : Remove the build SSH key from all nodes] 2026-06-17 20:46:42.858866 | ubuntu-noble | changed 2026-06-17 20:46:42.866821 | 2026-06-17 20:46:42.866900 | PLAY RECAP 2026-06-17 20:46:42.866960 | ubuntu-noble | ok: 5 changed: 4 unreachable: 0 failed: 0 skipped: 1 rescued: 0 ignored: 0 2026-06-17 20:46:42.866991 | 2026-06-17 20:46:42.991555 | POST-RUN END RESULT_NORMAL: [trusted : github.com/vexxhost/zuul-config/playbooks/base/post.yaml@main] 2026-06-17 20:46:42.993796 | POST-RUN START: [trusted : github.com/vexxhost/zuul-config/playbooks/base/post-logs.yaml@main] 2026-06-17 20:46:43.605591 | 2026-06-17 20:46:43.605731 | PLAY [localhost] 2026-06-17 20:46:43.617135 | 2026-06-17 20:46:43.617257 | TASK [Generate Zuul manifest] 2026-06-17 20:46:43.639370 | localhost | ok 2026-06-17 20:46:43.654360 | 2026-06-17 20:46:43.654559 | TASK [generate-zuul-manifest : Generate Zuul manifest] 2026-06-17 20:46:44.020148 | localhost | changed 2026-06-17 20:46:44.034774 | 2026-06-17 20:46:44.034939 | TASK [generate-zuul-manifest : Return Zuul manifest URL to Zuul] 2026-06-17 20:46:44.067834 | localhost | ok 2026-06-17 20:46:44.078519 | 2026-06-17 20:46:44.078593 | TASK [Upload logs] 2026-06-17 20:46:44.098464 | localhost | ok 2026-06-17 20:46:44.168501 | 2026-06-17 20:46:44.168643 | TASK [Set zuul-log-path fact] 2026-06-17 20:46:44.188234 | localhost | ok 2026-06-17 20:46:44.202424 | 2026-06-17 20:46:44.202522 | TASK [set-zuul-log-path-fact : Set log path for a build] 2026-06-17 20:46:44.234823 | localhost | ok 2026-06-17 20:46:44.242615 | 2026-06-17 20:46:44.242714 | TASK [upload-logs : Create log directories] 2026-06-17 20:46:44.650094 | localhost | changed 2026-06-17 20:46:44.658078 | 2026-06-17 20:46:44.658362 | TASK [upload-logs : Ensure logs are readable before uploading] 2026-06-17 20:46:45.068251 | localhost -> localhost | ok: Runtime: 0:00:00.004170 2026-06-17 20:46:45.076114 | 2026-06-17 20:46:45.076230 | TASK [upload-logs : Upload logs to log server] 2026-06-17 20:46:45.543301 | localhost | Output suppressed because no_log was given 2026-06-17 20:46:45.548669 | 2026-06-17 20:46:45.548766 | LOOP [upload-logs : Compress console log and json output] 2026-06-17 20:46:45.594707 | localhost | skipping: Conditional result was False 2026-06-17 20:46:45.603271 | localhost | skipping: Conditional result was False 2026-06-17 20:46:45.613610 | 2026-06-17 20:46:45.613789 | LOOP [upload-logs : Upload compressed console log and json output] 2026-06-17 20:46:45.659393 | localhost | skipping: Conditional result was False 2026-06-17 20:46:45.659782 | 2026-06-17 20:46:45.663455 | localhost | skipping: Conditional result was False 2026-06-17 20:46:45.679882 | 2026-06-17 20:46:45.680059 | LOOP [upload-logs : Upload console log and json output]