all: children: zuul_unreachable: hosts: {} hosts: controller: ansible_connection: ssh ansible_host: 199.204.45.99 ansible_port: 22 ansible_python_interpreter: auto ansible_user: zuul nodepool: az: nova cloud: ansible-vexxhost external_id: 811290ee-7df3-434b-b996-b595a19c76bd host_id: ca67e4dfe8e2d05e36b43a41100ff9d3779a900e052182405f4d509d interface_ip: 199.204.45.99 label: ansible-fedora-37-1vcpu private_ipv4: 192.168.0.16 private_ipv6: null provider: ansible-vexxhost-ca-ymq-1 public_ipv4: 199.204.45.99 public_ipv6: 2604:e100:1:0:f816:3eff:feab:6254 region: ca-ymq-1 slot: null zuul_use_fetch_output: true vars: zuul: _inheritance_path: - '' - '' - '' ansible_version: '8' artifacts: - branch: main change: '971' job: build-ansible-collection metadata: type: zuul_manifest name: Zuul Manifest patchset: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 project: ansible-collections/kubernetes.core url: https://56c01aaded8dfaa1a86c-31710bb5d4a5e7a96ecde54183c4711c.ssl.cf1.rackcdn.com/ansible/ac18e18ca04748858fae9be6840acf90/zuul-manifest.json - branch: main change: '971' job: build-ansible-collection metadata: type: ansible_collection version: 7.0.0 name: kubernetes.core patchset: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 project: ansible-collections/kubernetes.core url: https://56c01aaded8dfaa1a86c-31710bb5d4a5e7a96ecde54183c4711c.ssl.cf1.rackcdn.com/ansible/ac18e18ca04748858fae9be6840acf90/artifacts/kubernetes-core-7.0.0.tar.gz attempts: 1 branch: main build: 26ce0c52ad6a4f0ca824de8c0a4ef0c2 build_refs: - branch: main change: '971' change_message: "Added support for copying files to init Containers.\n\n##### SUMMARY\r\nWas going trough the list with issues and found [958](https://github.com/ansible-collections/kubernetes.core/issues/958); which seemed a quick fix.\r\n\r\nWhat I fixed with with this PR:\r\n- Added support for copying files to init containers.\r\n- Fixed the format message when an exec is failing for a pod (the order was wrong).\r\n- Added a check if the container that you try to run copy for is started.\r\n\r\n##### ISSUE TYPE\r\n- Bugfix Pull Request\r\n\r\n##### COMPONENT NAME\r\ncopy.py module\r\n\r\n##### ADDITIONAL INFORMATION\r\nSome testing.\r\n\r\nVerify that the pod does not exist:\r\n```bash\r\nkubectl -n default get pod/yorick\r\n```\r\nOutput:\r\n```\r\nError from server (NotFound): pods \"yorick\" not found\r\n```\r\nRun the playbook to create the file, create the deployment, wait for the init container to be ready, copy the created file to the init container, `cat` the copied file (using `kubernetes.core.k8s_exec`) that is now in the init container and try to copy the created file to the (not started) container (which fails - to see the new error message for it):\r\n```bash\r\ncat << EOF | ansible-playbook /dev/stdin\r\n- hosts: localhost\r\n gather_facts: False\r\n tasks:\r\n\r\n \ - ansible.builtin.copy:\r\n content: |\r\n Hi there\r\n dest: /tmp/yorick.txt\r\n\r\n - name: Deploy pod with initContainer with an unlimited while loop\r\n kubernetes.core.k8s:\r\n kubeconfig: \"~/.kube/config\"\r\n \ definition:\r\n apiVersion: v1\r\n kind: Pod\r\n metadata:\r\n \ name: \"yorick\"\r\n namespace: \"default\"\r\n spec:\r\n \ initContainers:\r\n - name: \"yorick-init\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n echo \"Init container started, waiting for file...\"\r\n # Wait for the file to be copied\r\n while :;do\r\n echo \"Waiting for file\"\r\n sleep 5\r\n done\r\n \ echo \"File received! Init container completing...\"\r\n \ containers:\r\n - name: \"yorick-container\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n # Keep container running for testing\r\n sleep 300\r\n\r\n - kubernetes.core.k8s_info:\r\n kubeconfig: \"~/.kube/config\"\r\n api_version: v1\r\n kind: Pod\r\n name: \"yorick\"\r\n namespace: \"default\"\r\n \ register: pod_status\r\n until: >-\r\n pod_status.resources|length > 0\r\n and 'initContainerStatuses' in pod_status.resources.0.status\r\n \ and pod_status.resources.0.status.initContainerStatuses|length > 0\r\n \ and pod_status.resources.0.status.initContainerStatuses.0.started|bool\r\n\r\n \ - name: Copy /tmp/yorick.txt to the yorick-init init container\r\n kubernetes.core.k8s_cp:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n local_path: /tmp/yorick.txt\r\n \ container: yorick-init\r\n\r\n - name: Execute a command\r\n kubernetes.core.k8s_exec:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n container: yorick-init\r\n command: cat /tmp/yorick.txt\r\n \ register: exec_out\r\n\r\n - ansible.builtin.debug:\r\n var: exec_out.stdout\r\n\r\n \ - name: Try to copy /tmp/yorick.txt to the yorick-container container\r\n \ kubernetes.core.k8s_cp:\r\n kubeconfig: \"~/.kube/config\"\r\n \ namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n \ local_path: /tmp/yorick.txt\r\n container: yorick-container\r\nEOF\r\n```\r\nOutput:\r\n```bash\r\nPLAY [localhost] ********************************************************************************************************************************************************************\r\n\r\nTASK [ansible.builtin.copy] *********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.016) 0:00:00.016 *********\r\nok: [localhost]\r\n\r\nTASK [Deploy pod with initContainer with an unlimited while loop] *******************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.788) 0:00:00.804 *********\r\nchanged: [localhost]\r\n\r\nTASK [kubernetes.core.k8s_info] *****************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:25 +0200 (0:00:03.963) 0:00:04.768 *********\r\nFAILED - RETRYING: [localhost]: kubernetes.core.k8s_info (3 retries left).\r\nok: [localhost]\r\n\r\nTASK [Copy /tmp/yorick.txt to the yorick-init init container] ***********************************************************************************************************************\r\nThursday 31 July 2025 02:01:32 +0200 (0:00:06.598) 0:00:11.366 *********\r\nchanged: [localhost]\r\n\r\nTASK [Execute a command] ************************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:39 +0200 (0:00:07.017) 0:00:18.383 *********\r\nchanged: [localhost]\r\n\r\nTASK [ansible.builtin.debug] ********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.644) 0:00:19.028 *********\r\nok: [localhost] => {\r\n \"exec_out.stdout\": \"Hi there\\n\"\r\n}\r\n\r\nTASK [Try to copy /tmp/yorick.txt to the yorick-container container] ****************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.021) 0:00:19.050 *********\r\nfatal: [localhost]: FAILED! => {\r\n \"changed\": false\r\n}\r\n\r\nMSG:\r\n\r\nPod container yorick-container is not started\r\n\r\nPLAY RECAP **************************************************************************************************************************************************************************\r\nlocalhost \ : ok=6 changed=3 unreachable=0 failed=1 skipped=0 \ rescued=0 ignored=0\r\n\r\nPlaybook run took 0 days, 0 hours, 0 minutes, 21 seconds\r\n```\r\n" change_url: https://github.com/ansible-collections/kubernetes.core/pull/971 commit_id: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 patchset: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/kubernetes.core name: ansible-collections/kubernetes.core short_name: kubernetes.core src_dir: src/github.com/ansible-collections/kubernetes.core topic: null buildset: 2179cc75d1c14725abacfaa5d4d2d3bb buildset_refs: - branch: main change: '971' change_message: "Added support for copying files to init Containers.\n\n##### SUMMARY\r\nWas going trough the list with issues and found [958](https://github.com/ansible-collections/kubernetes.core/issues/958); which seemed a quick fix.\r\n\r\nWhat I fixed with with this PR:\r\n- Added support for copying files to init containers.\r\n- Fixed the format message when an exec is failing for a pod (the order was wrong).\r\n- Added a check if the container that you try to run copy for is started.\r\n\r\n##### ISSUE TYPE\r\n- Bugfix Pull Request\r\n\r\n##### COMPONENT NAME\r\ncopy.py module\r\n\r\n##### ADDITIONAL INFORMATION\r\nSome testing.\r\n\r\nVerify that the pod does not exist:\r\n```bash\r\nkubectl -n default get pod/yorick\r\n```\r\nOutput:\r\n```\r\nError from server (NotFound): pods \"yorick\" not found\r\n```\r\nRun the playbook to create the file, create the deployment, wait for the init container to be ready, copy the created file to the init container, `cat` the copied file (using `kubernetes.core.k8s_exec`) that is now in the init container and try to copy the created file to the (not started) container (which fails - to see the new error message for it):\r\n```bash\r\ncat << EOF | ansible-playbook /dev/stdin\r\n- hosts: localhost\r\n gather_facts: False\r\n tasks:\r\n\r\n \ - ansible.builtin.copy:\r\n content: |\r\n Hi there\r\n dest: /tmp/yorick.txt\r\n\r\n - name: Deploy pod with initContainer with an unlimited while loop\r\n kubernetes.core.k8s:\r\n kubeconfig: \"~/.kube/config\"\r\n \ definition:\r\n apiVersion: v1\r\n kind: Pod\r\n metadata:\r\n \ name: \"yorick\"\r\n namespace: \"default\"\r\n spec:\r\n \ initContainers:\r\n - name: \"yorick-init\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n echo \"Init container started, waiting for file...\"\r\n # Wait for the file to be copied\r\n while :;do\r\n echo \"Waiting for file\"\r\n sleep 5\r\n done\r\n \ echo \"File received! Init container completing...\"\r\n \ containers:\r\n - name: \"yorick-container\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n # Keep container running for testing\r\n sleep 300\r\n\r\n - kubernetes.core.k8s_info:\r\n kubeconfig: \"~/.kube/config\"\r\n api_version: v1\r\n kind: Pod\r\n name: \"yorick\"\r\n namespace: \"default\"\r\n \ register: pod_status\r\n until: >-\r\n pod_status.resources|length > 0\r\n and 'initContainerStatuses' in pod_status.resources.0.status\r\n \ and pod_status.resources.0.status.initContainerStatuses|length > 0\r\n \ and pod_status.resources.0.status.initContainerStatuses.0.started|bool\r\n\r\n \ - name: Copy /tmp/yorick.txt to the yorick-init init container\r\n kubernetes.core.k8s_cp:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n local_path: /tmp/yorick.txt\r\n \ container: yorick-init\r\n\r\n - name: Execute a command\r\n kubernetes.core.k8s_exec:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n container: yorick-init\r\n command: cat /tmp/yorick.txt\r\n \ register: exec_out\r\n\r\n - ansible.builtin.debug:\r\n var: exec_out.stdout\r\n\r\n \ - name: Try to copy /tmp/yorick.txt to the yorick-container container\r\n \ kubernetes.core.k8s_cp:\r\n kubeconfig: \"~/.kube/config\"\r\n \ namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n \ local_path: /tmp/yorick.txt\r\n container: yorick-container\r\nEOF\r\n```\r\nOutput:\r\n```bash\r\nPLAY [localhost] ********************************************************************************************************************************************************************\r\n\r\nTASK [ansible.builtin.copy] *********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.016) 0:00:00.016 *********\r\nok: [localhost]\r\n\r\nTASK [Deploy pod with initContainer with an unlimited while loop] *******************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.788) 0:00:00.804 *********\r\nchanged: [localhost]\r\n\r\nTASK [kubernetes.core.k8s_info] *****************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:25 +0200 (0:00:03.963) 0:00:04.768 *********\r\nFAILED - RETRYING: [localhost]: kubernetes.core.k8s_info (3 retries left).\r\nok: [localhost]\r\n\r\nTASK [Copy /tmp/yorick.txt to the yorick-init init container] ***********************************************************************************************************************\r\nThursday 31 July 2025 02:01:32 +0200 (0:00:06.598) 0:00:11.366 *********\r\nchanged: [localhost]\r\n\r\nTASK [Execute a command] ************************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:39 +0200 (0:00:07.017) 0:00:18.383 *********\r\nchanged: [localhost]\r\n\r\nTASK [ansible.builtin.debug] ********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.644) 0:00:19.028 *********\r\nok: [localhost] => {\r\n \"exec_out.stdout\": \"Hi there\\n\"\r\n}\r\n\r\nTASK [Try to copy /tmp/yorick.txt to the yorick-container container] ****************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.021) 0:00:19.050 *********\r\nfatal: [localhost]: FAILED! => {\r\n \"changed\": false\r\n}\r\n\r\nMSG:\r\n\r\nPod container yorick-container is not started\r\n\r\nPLAY RECAP **************************************************************************************************************************************************************************\r\nlocalhost \ : ok=6 changed=3 unreachable=0 failed=1 skipped=0 \ rescued=0 ignored=0\r\n\r\nPlaybook run took 0 days, 0 hours, 0 minutes, 21 seconds\r\n```\r\n" change_url: https://github.com/ansible-collections/kubernetes.core/pull/971 commit_id: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 patchset: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/kubernetes.core name: ansible-collections/kubernetes.core short_name: kubernetes.core src_dir: src/github.com/ansible-collections/kubernetes.core topic: null change: '971' change_message: "Added support for copying files to init Containers.\n\n##### SUMMARY\r\nWas going trough the list with issues and found [958](https://github.com/ansible-collections/kubernetes.core/issues/958); which seemed a quick fix.\r\n\r\nWhat I fixed with with this PR:\r\n- Added support for copying files to init containers.\r\n- Fixed the format message when an exec is failing for a pod (the order was wrong).\r\n- Added a check if the container that you try to run copy for is started.\r\n\r\n##### ISSUE TYPE\r\n- Bugfix Pull Request\r\n\r\n##### COMPONENT NAME\r\ncopy.py module\r\n\r\n##### ADDITIONAL INFORMATION\r\nSome testing.\r\n\r\nVerify that the pod does not exist:\r\n```bash\r\nkubectl -n default get pod/yorick\r\n```\r\nOutput:\r\n```\r\nError from server (NotFound): pods \"yorick\" not found\r\n```\r\nRun the playbook to create the file, create the deployment, wait for the init container to be ready, copy the created file to the init container, `cat` the copied file (using `kubernetes.core.k8s_exec`) that is now in the init container and try to copy the created file to the (not started) container (which fails - to see the new error message for it):\r\n```bash\r\ncat << EOF | ansible-playbook /dev/stdin\r\n- hosts: localhost\r\n gather_facts: False\r\n tasks:\r\n\r\n \ - ansible.builtin.copy:\r\n content: |\r\n Hi there\r\n dest: /tmp/yorick.txt\r\n\r\n - name: Deploy pod with initContainer with an unlimited while loop\r\n kubernetes.core.k8s:\r\n kubeconfig: \"~/.kube/config\"\r\n \ definition:\r\n apiVersion: v1\r\n kind: Pod\r\n metadata:\r\n \ name: \"yorick\"\r\n namespace: \"default\"\r\n spec:\r\n \ initContainers:\r\n - name: \"yorick-init\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n echo \"Init container started, waiting for file...\"\r\n # Wait for the file to be copied\r\n while :;do\r\n echo \"Waiting for file\"\r\n sleep 5\r\n done\r\n \ echo \"File received! Init container completing...\"\r\n \ containers:\r\n - name: \"yorick-container\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n # Keep container running for testing\r\n sleep 300\r\n\r\n - kubernetes.core.k8s_info:\r\n \ kubeconfig: \"~/.kube/config\"\r\n api_version: v1\r\n kind: Pod\r\n name: \"yorick\"\r\n namespace: \"default\"\r\n register: pod_status\r\n until: >-\r\n pod_status.resources|length > 0\r\n and 'initContainerStatuses' in pod_status.resources.0.status\r\n and pod_status.resources.0.status.initContainerStatuses|length > 0\r\n and pod_status.resources.0.status.initContainerStatuses.0.started|bool\r\n\r\n \ - name: Copy /tmp/yorick.txt to the yorick-init init container\r\n kubernetes.core.k8s_cp:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n local_path: /tmp/yorick.txt\r\n \ container: yorick-init\r\n\r\n - name: Execute a command\r\n kubernetes.core.k8s_exec:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n container: yorick-init\r\n command: cat /tmp/yorick.txt\r\n \ register: exec_out\r\n\r\n - ansible.builtin.debug:\r\n var: exec_out.stdout\r\n\r\n \ - name: Try to copy /tmp/yorick.txt to the yorick-container container\r\n \ kubernetes.core.k8s_cp:\r\n kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n local_path: /tmp/yorick.txt\r\n container: yorick-container\r\nEOF\r\n```\r\nOutput:\r\n```bash\r\nPLAY [localhost] ********************************************************************************************************************************************************************\r\n\r\nTASK [ansible.builtin.copy] *********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.016) 0:00:00.016 *********\r\nok: [localhost]\r\n\r\nTASK [Deploy pod with initContainer with an unlimited while loop] *******************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.788) 0:00:00.804 *********\r\nchanged: [localhost]\r\n\r\nTASK [kubernetes.core.k8s_info] *****************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:25 +0200 (0:00:03.963) 0:00:04.768 *********\r\nFAILED - RETRYING: [localhost]: kubernetes.core.k8s_info (3 retries left).\r\nok: [localhost]\r\n\r\nTASK [Copy /tmp/yorick.txt to the yorick-init init container] ***********************************************************************************************************************\r\nThursday 31 July 2025 02:01:32 +0200 (0:00:06.598) 0:00:11.366 *********\r\nchanged: [localhost]\r\n\r\nTASK [Execute a command] ************************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:39 +0200 (0:00:07.017) 0:00:18.383 *********\r\nchanged: [localhost]\r\n\r\nTASK [ansible.builtin.debug] ********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.644) 0:00:19.028 *********\r\nok: [localhost] => {\r\n \"exec_out.stdout\": \"Hi there\\n\"\r\n}\r\n\r\nTASK [Try to copy /tmp/yorick.txt to the yorick-container container] ****************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.021) 0:00:19.050 *********\r\nfatal: [localhost]: FAILED! => {\r\n \"changed\": false\r\n}\r\n\r\nMSG:\r\n\r\nPod container yorick-container is not started\r\n\r\nPLAY RECAP **************************************************************************************************************************************************************************\r\nlocalhost \ : ok=6 changed=3 unreachable=0 failed=1 skipped=0 \ rescued=0 ignored=0\r\n\r\nPlaybook run took 0 days, 0 hours, 0 minutes, 21 seconds\r\n```\r\n" change_url: https://github.com/ansible-collections/kubernetes.core/pull/971 child_jobs: [] commit_id: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 event_id: be9e3450-9983-11f0-8781-3272edb87b42 executor: hostname: ze02.softwarefactory-project.io inventory_file: /var/lib/zuul/builds/26ce0c52ad6a4f0ca824de8c0a4ef0c2/ansible/inventory.yaml log_root: /var/lib/zuul/builds/26ce0c52ad6a4f0ca824de8c0a4ef0c2/work/logs result_data_file: /var/lib/zuul/builds/26ce0c52ad6a4f0ca824de8c0a4ef0c2/work/results.json src_root: /var/lib/zuul/builds/26ce0c52ad6a4f0ca824de8c0a4ef0c2/work/src work_root: /var/lib/zuul/builds/26ce0c52ad6a4f0ca824de8c0a4ef0c2/work items: - branch: stable-6 change: '1001' change_message: "[PR #995/da93cce1 backport][stable-6] Add support for skip-schema-validation in helm module\n\n**This is a backport of PR #995 as merged into main (da93cce1fa75db5e18613c22c018ba20c6d81a67).**\n\n##### SUMMARY\r\n\r\nThis pull request adds support for a new `skip_schema_validation` option to the `helm` module, allowing users to disable JSON schema validation for Helm charts and values (requires `helm >= 3.16.0`). \r\n\r\n##### ISSUE TYPE\r\n- Feature Pull Request\r\n\r\n##### COMPONENT NAME\r\nhelm\r\n\r\n##### ADDITIONAL INFORMATION\r\n\r\nAdded the `skip_schema_validation` boolean parameter to the `helm` module, allowing users to disable JSON schema validation for charts and values. This option is only available with Helm versions >= 3.16.0, and an appropriate error is raised for older versions.\r\n\r\nAdded integration tests to verify the behavior of the `skip_schema_validation` option, including cases for both supported and unsupported Helm versions.\r\n\r\nCloses #994 " change_url: https://github.com/ansible-collections/kubernetes.core/pull/1001 commit_id: 9899c1e6606f50d2216e6ab0a8c2b8ede7b47a97 patchset: 9899c1e6606f50d2216e6ab0a8c2b8ede7b47a97 project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/kubernetes.core name: ansible-collections/kubernetes.core short_name: kubernetes.core src_dir: src/github.com/ansible-collections/kubernetes.core topic: null - branch: main change: '971' change_message: "Added support for copying files to init Containers.\n\n##### SUMMARY\r\nWas going trough the list with issues and found [958](https://github.com/ansible-collections/kubernetes.core/issues/958); which seemed a quick fix.\r\n\r\nWhat I fixed with with this PR:\r\n- Added support for copying files to init containers.\r\n- Fixed the format message when an exec is failing for a pod (the order was wrong).\r\n- Added a check if the container that you try to run copy for is started.\r\n\r\n##### ISSUE TYPE\r\n- Bugfix Pull Request\r\n\r\n##### COMPONENT NAME\r\ncopy.py module\r\n\r\n##### ADDITIONAL INFORMATION\r\nSome testing.\r\n\r\nVerify that the pod does not exist:\r\n```bash\r\nkubectl -n default get pod/yorick\r\n```\r\nOutput:\r\n```\r\nError from server (NotFound): pods \"yorick\" not found\r\n```\r\nRun the playbook to create the file, create the deployment, wait for the init container to be ready, copy the created file to the init container, `cat` the copied file (using `kubernetes.core.k8s_exec`) that is now in the init container and try to copy the created file to the (not started) container (which fails - to see the new error message for it):\r\n```bash\r\ncat << EOF | ansible-playbook /dev/stdin\r\n- hosts: localhost\r\n gather_facts: False\r\n tasks:\r\n\r\n \ - ansible.builtin.copy:\r\n content: |\r\n Hi there\r\n dest: /tmp/yorick.txt\r\n\r\n - name: Deploy pod with initContainer with an unlimited while loop\r\n kubernetes.core.k8s:\r\n kubeconfig: \"~/.kube/config\"\r\n \ definition:\r\n apiVersion: v1\r\n kind: Pod\r\n metadata:\r\n \ name: \"yorick\"\r\n namespace: \"default\"\r\n spec:\r\n \ initContainers:\r\n - name: \"yorick-init\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n echo \"Init container started, waiting for file...\"\r\n # Wait for the file to be copied\r\n while :;do\r\n echo \"Waiting for file\"\r\n sleep 5\r\n done\r\n \ echo \"File received! Init container completing...\"\r\n \ containers:\r\n - name: \"yorick-container\"\r\n image: busybox:latest\r\n command: [\"/bin/sh\"]\r\n args:\r\n \ - \"-c\"\r\n - |\r\n # Keep container running for testing\r\n sleep 300\r\n\r\n - kubernetes.core.k8s_info:\r\n kubeconfig: \"~/.kube/config\"\r\n api_version: v1\r\n kind: Pod\r\n name: \"yorick\"\r\n namespace: \"default\"\r\n \ register: pod_status\r\n until: >-\r\n pod_status.resources|length > 0\r\n and 'initContainerStatuses' in pod_status.resources.0.status\r\n \ and pod_status.resources.0.status.initContainerStatuses|length > 0\r\n \ and pod_status.resources.0.status.initContainerStatuses.0.started|bool\r\n\r\n \ - name: Copy /tmp/yorick.txt to the yorick-init init container\r\n kubernetes.core.k8s_cp:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n local_path: /tmp/yorick.txt\r\n \ container: yorick-init\r\n\r\n - name: Execute a command\r\n kubernetes.core.k8s_exec:\r\n \ kubeconfig: \"~/.kube/config\"\r\n namespace: default\r\n pod: yorick\r\n container: yorick-init\r\n command: cat /tmp/yorick.txt\r\n \ register: exec_out\r\n\r\n - ansible.builtin.debug:\r\n var: exec_out.stdout\r\n\r\n \ - name: Try to copy /tmp/yorick.txt to the yorick-container container\r\n \ kubernetes.core.k8s_cp:\r\n kubeconfig: \"~/.kube/config\"\r\n \ namespace: default\r\n pod: yorick\r\n remote_path: /tmp/yorick.txt\r\n \ local_path: /tmp/yorick.txt\r\n container: yorick-container\r\nEOF\r\n```\r\nOutput:\r\n```bash\r\nPLAY [localhost] ********************************************************************************************************************************************************************\r\n\r\nTASK [ansible.builtin.copy] *********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.016) 0:00:00.016 *********\r\nok: [localhost]\r\n\r\nTASK [Deploy pod with initContainer with an unlimited while loop] *******************************************************************************************************************\r\nThursday 31 July 2025 02:01:21 +0200 (0:00:00.788) 0:00:00.804 *********\r\nchanged: [localhost]\r\n\r\nTASK [kubernetes.core.k8s_info] *****************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:25 +0200 (0:00:03.963) 0:00:04.768 *********\r\nFAILED - RETRYING: [localhost]: kubernetes.core.k8s_info (3 retries left).\r\nok: [localhost]\r\n\r\nTASK [Copy /tmp/yorick.txt to the yorick-init init container] ***********************************************************************************************************************\r\nThursday 31 July 2025 02:01:32 +0200 (0:00:06.598) 0:00:11.366 *********\r\nchanged: [localhost]\r\n\r\nTASK [Execute a command] ************************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:39 +0200 (0:00:07.017) 0:00:18.383 *********\r\nchanged: [localhost]\r\n\r\nTASK [ansible.builtin.debug] ********************************************************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.644) 0:00:19.028 *********\r\nok: [localhost] => {\r\n \"exec_out.stdout\": \"Hi there\\n\"\r\n}\r\n\r\nTASK [Try to copy /tmp/yorick.txt to the yorick-container container] ****************************************************************************************************************\r\nThursday 31 July 2025 02:01:40 +0200 (0:00:00.021) 0:00:19.050 *********\r\nfatal: [localhost]: FAILED! => {\r\n \"changed\": false\r\n}\r\n\r\nMSG:\r\n\r\nPod container yorick-container is not started\r\n\r\nPLAY RECAP **************************************************************************************************************************************************************************\r\nlocalhost \ : ok=6 changed=3 unreachable=0 failed=1 skipped=0 \ rescued=0 ignored=0\r\n\r\nPlaybook run took 0 days, 0 hours, 0 minutes, 21 seconds\r\n```\r\n" change_url: https://github.com/ansible-collections/kubernetes.core/pull/971 commit_id: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 patchset: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/kubernetes.core name: ansible-collections/kubernetes.core short_name: kubernetes.core src_dir: src/github.com/ansible-collections/kubernetes.core topic: null job: ansible-galaxy-importer jobtags: [] max_attempts: 3 message: QWRkZWQgc3VwcG9ydCBmb3IgY29weWluZyBmaWxlcyB0byBpbml0IENvbnRhaW5lcnMuCgojIyMjIyBTVU1NQVJZDQpXYXMgZ29pbmcgdHJvdWdoIHRoZSBsaXN0IHdpdGggaXNzdWVzIGFuZCBmb3VuZCBbOTU4XShodHRwczovL2dpdGh1Yi5jb20vYW5zaWJsZS1jb2xsZWN0aW9ucy9rdWJlcm5ldGVzLmNvcmUvaXNzdWVzLzk1OCk7IHdoaWNoIHNlZW1lZCBhIHF1aWNrIGZpeC4NCg0KV2hhdCBJIGZpeGVkIHdpdGggd2l0aCB0aGlzIFBSOg0KLSBBZGRlZCBzdXBwb3J0IGZvciBjb3B5aW5nIGZpbGVzIHRvIGluaXQgY29udGFpbmVycy4NCi0gRml4ZWQgdGhlIGZvcm1hdCBtZXNzYWdlIHdoZW4gYW4gZXhlYyBpcyBmYWlsaW5nIGZvciBhIHBvZCAodGhlIG9yZGVyIHdhcyB3cm9uZykuDQotIEFkZGVkIGEgY2hlY2sgaWYgdGhlIGNvbnRhaW5lciB0aGF0IHlvdSB0cnkgdG8gcnVuIGNvcHkgZm9yIGlzIHN0YXJ0ZWQuDQoNCiMjIyMjIElTU1VFIFRZUEUNCi0gQnVnZml4IFB1bGwgUmVxdWVzdA0KDQojIyMjIyBDT01QT05FTlQgTkFNRQ0KY29weS5weSBtb2R1bGUNCg0KIyMjIyMgQURESVRJT05BTCBJTkZPUk1BVElPTg0KU29tZSB0ZXN0aW5nLg0KDQpWZXJpZnkgdGhhdCB0aGUgcG9kIGRvZXMgbm90IGV4aXN0Og0KYGBgYmFzaA0Ka3ViZWN0bCAtbiBkZWZhdWx0IGdldCBwb2QveW9yaWNrDQpgYGANCk91dHB1dDoNCmBgYA0KRXJyb3IgZnJvbSBzZXJ2ZXIgKE5vdEZvdW5kKTogcG9kcyAieW9yaWNrIiBub3QgZm91bmQNCmBgYA0KUnVuIHRoZSBwbGF5Ym9vayB0byBjcmVhdGUgdGhlIGZpbGUsIGNyZWF0ZSB0aGUgZGVwbG95bWVudCwgd2FpdCBmb3IgdGhlIGluaXQgY29udGFpbmVyIHRvIGJlIHJlYWR5LCBjb3B5IHRoZSBjcmVhdGVkIGZpbGUgdG8gdGhlIGluaXQgY29udGFpbmVyLCBgY2F0YCB0aGUgY29waWVkIGZpbGUgKHVzaW5nIGBrdWJlcm5ldGVzLmNvcmUuazhzX2V4ZWNgKSB0aGF0IGlzIG5vdyBpbiB0aGUgaW5pdCBjb250YWluZXIgYW5kIHRyeSB0byBjb3B5IHRoZSBjcmVhdGVkIGZpbGUgdG8gdGhlIChub3Qgc3RhcnRlZCkgY29udGFpbmVyICh3aGljaCBmYWlscyAtIHRvIHNlZSB0aGUgbmV3IGVycm9yIG1lc3NhZ2UgZm9yIGl0KToNCmBgYGJhc2gNCmNhdCA8PCBFT0YgfCBhbnNpYmxlLXBsYXlib29rIC9kZXYvc3RkaW4NCi0gaG9zdHM6IGxvY2FsaG9zdA0KICBnYXRoZXJfZmFjdHM6IEZhbHNlDQogIHRhc2tzOg0KDQogIC0gYW5zaWJsZS5idWlsdGluLmNvcHk6DQogICAgICBjb250ZW50OiB8DQogICAgICAgIEhpIHRoZXJlDQogICAgICBkZXN0OiAvdG1wL3lvcmljay50eHQNCg0KICAtIG5hbWU6IERlcGxveSBwb2Qgd2l0aCBpbml0Q29udGFpbmVyIHdpdGggYW4gdW5saW1pdGVkIHdoaWxlIGxvb3ANCiAgICBrdWJlcm5ldGVzLmNvcmUuazhzOg0KICAgICAga3ViZWNvbmZpZzogIn4vLmt1YmUvY29uZmlnIg0KICAgICAgZGVmaW5pdGlvbjoNCiAgICAgICAgYXBpVmVyc2lvbjogdjENCiAgICAgICAga2luZDogUG9kDQogICAgICAgIG1ldGFkYXRhOg0KICAgICAgICAgIG5hbWU6ICJ5b3JpY2siDQogICAgICAgICAgbmFtZXNwYWNlOiAiZGVmYXVsdCINCiAgICAgICAgc3BlYzoNCiAgICAgICAgICBpbml0Q29udGFpbmVyczoNCiAgICAgICAgICAgIC0gbmFtZTogInlvcmljay1pbml0Ig0KICAgICAgICAgICAgICBpbWFnZTogYnVzeWJveDpsYXRlc3QNCiAgICAgICAgICAgICAgY29tbWFuZDogWyIvYmluL3NoIl0NCiAgICAgICAgICAgICAgYXJnczoNCiAgICAgICAgICAgICAgICAtICItYyINCiAgICAgICAgICAgICAgICAtIHwNCiAgICAgICAgICAgICAgICAgIGVjaG8gIkluaXQgY29udGFpbmVyIHN0YXJ0ZWQsIHdhaXRpbmcgZm9yIGZpbGUuLi4iDQogICAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBmaWxlIHRvIGJlIGNvcGllZA0KICAgICAgICAgICAgICAgICAgd2hpbGUgOjtkbw0KICAgICAgICAgICAgICAgICAgICBlY2hvICJXYWl0aW5nIGZvciBmaWxlIg0KICAgICAgICAgICAgICAgICAgICBzbGVlcCA1DQogICAgICAgICAgICAgICAgICBkb25lDQogICAgICAgICAgICAgICAgICBlY2hvICJGaWxlIHJlY2VpdmVkISBJbml0IGNvbnRhaW5lciBjb21wbGV0aW5nLi4uIg0KICAgICAgICAgIGNvbnRhaW5lcnM6DQogICAgICAgICAgICAtIG5hbWU6ICJ5b3JpY2stY29udGFpbmVyIg0KICAgICAgICAgICAgICBpbWFnZTogYnVzeWJveDpsYXRlc3QNCiAgICAgICAgICAgICAgY29tbWFuZDogWyIvYmluL3NoIl0NCiAgICAgICAgICAgICAgYXJnczoNCiAgICAgICAgICAgICAgICAtICItYyINCiAgICAgICAgICAgICAgICAtIHwNCiAgICAgICAgICAgICAgICAgICMgS2VlcCBjb250YWluZXIgcnVubmluZyBmb3IgdGVzdGluZw0KICAgICAgICAgICAgICAgICAgc2xlZXAgMzAwDQoNCiAgLSBrdWJlcm5ldGVzLmNvcmUuazhzX2luZm86DQogICAgICBrdWJlY29uZmlnOiAifi8ua3ViZS9jb25maWciDQogICAgICBhcGlfdmVyc2lvbjogdjENCiAgICAgIGtpbmQ6IFBvZA0KICAgICAgbmFtZTogInlvcmljayINCiAgICAgIG5hbWVzcGFjZTogImRlZmF1bHQiDQogICAgcmVnaXN0ZXI6IHBvZF9zdGF0dXMNCiAgICB1bnRpbDogPi0NCiAgICAgIHBvZF9zdGF0dXMucmVzb3VyY2VzfGxlbmd0aCA+IDANCiAgICAgIGFuZCAnaW5pdENvbnRhaW5lclN0YXR1c2VzJyBpbiBwb2Rfc3RhdHVzLnJlc291cmNlcy4wLnN0YXR1cw0KICAgICAgYW5kIHBvZF9zdGF0dXMucmVzb3VyY2VzLjAuc3RhdHVzLmluaXRDb250YWluZXJTdGF0dXNlc3xsZW5ndGggPiAwDQogICAgICBhbmQgcG9kX3N0YXR1cy5yZXNvdXJjZXMuMC5zdGF0dXMuaW5pdENvbnRhaW5lclN0YXR1c2VzLjAuc3RhcnRlZHxib29sDQoNCiAgLSBuYW1lOiBDb3B5IC90bXAveW9yaWNrLnR4dCB0byB0aGUgeW9yaWNrLWluaXQgaW5pdCBjb250YWluZXINCiAgICBrdWJlcm5ldGVzLmNvcmUuazhzX2NwOg0KICAgICAga3ViZWNvbmZpZzogIn4vLmt1YmUvY29uZmlnIg0KICAgICAgbmFtZXNwYWNlOiBkZWZhdWx0DQogICAgICBwb2Q6IHlvcmljaw0KICAgICAgcmVtb3RlX3BhdGg6IC90bXAveW9yaWNrLnR4dA0KICAgICAgbG9jYWxfcGF0aDogL3RtcC95b3JpY2sudHh0DQogICAgICBjb250YWluZXI6IHlvcmljay1pbml0DQoNCiAgLSBuYW1lOiBFeGVjdXRlIGEgY29tbWFuZA0KICAgIGt1YmVybmV0ZXMuY29yZS5rOHNfZXhlYzoNCiAgICAgIGt1YmVjb25maWc6ICJ+Ly5rdWJlL2NvbmZpZyINCiAgICAgIG5hbWVzcGFjZTogZGVmYXVsdA0KICAgICAgcG9kOiB5b3JpY2sNCiAgICAgIGNvbnRhaW5lcjogeW9yaWNrLWluaXQNCiAgICAgIGNvbW1hbmQ6IGNhdCAvdG1wL3lvcmljay50eHQNCiAgICByZWdpc3RlcjogZXhlY19vdXQNCg0KICAtIGFuc2libGUuYnVpbHRpbi5kZWJ1ZzoNCiAgICAgIHZhcjogZXhlY19vdXQuc3Rkb3V0DQoNCiAgLSBuYW1lOiBUcnkgdG8gY29weSAvdG1wL3lvcmljay50eHQgdG8gdGhlIHlvcmljay1jb250YWluZXIgY29udGFpbmVyDQogICAga3ViZXJuZXRlcy5jb3JlLms4c19jcDoNCiAgICAgIGt1YmVjb25maWc6ICJ+Ly5rdWJlL2NvbmZpZyINCiAgICAgIG5hbWVzcGFjZTogZGVmYXVsdA0KICAgICAgcG9kOiB5b3JpY2sNCiAgICAgIHJlbW90ZV9wYXRoOiAvdG1wL3lvcmljay50eHQNCiAgICAgIGxvY2FsX3BhdGg6IC90bXAveW9yaWNrLnR4dA0KICAgICAgY29udGFpbmVyOiB5b3JpY2stY29udGFpbmVyDQpFT0YNCmBgYA0KT3V0cHV0Og0KYGBgYmFzaA0KUExBWSBbbG9jYWxob3N0XSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQpUQVNLIFthbnNpYmxlLmJ1aWx0aW4uY29weV0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpUaHVyc2RheSAzMSBKdWx5IDIwMjUgIDAyOjAxOjIxICswMjAwICgwOjAwOjAwLjAxNikgICAgICAgMDowMDowMC4wMTYgKioqKioqKioqDQpvazogW2xvY2FsaG9zdF0NCg0KVEFTSyBbRGVwbG95IHBvZCB3aXRoIGluaXRDb250YWluZXIgd2l0aCBhbiB1bmxpbWl0ZWQgd2hpbGUgbG9vcF0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KVGh1cnNkYXkgMzEgSnVseSAyMDI1ICAwMjowMToyMSArMDIwMCAoMDowMDowMC43ODgpICAgICAgIDA6MDA6MDAuODA0ICoqKioqKioqKg0KY2hhbmdlZDogW2xvY2FsaG9zdF0NCg0KVEFTSyBba3ViZXJuZXRlcy5jb3JlLms4c19pbmZvXSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KVGh1cnNkYXkgMzEgSnVseSAyMDI1ICAwMjowMToyNSArMDIwMCAoMDowMDowMy45NjMpICAgICAgIDA6MDA6MDQuNzY4ICoqKioqKioqKg0KRkFJTEVEIC0gUkVUUllJTkc6IFtsb2NhbGhvc3RdOiBrdWJlcm5ldGVzLmNvcmUuazhzX2luZm8gKDMgcmV0cmllcyBsZWZ0KS4NCm9rOiBbbG9jYWxob3N0XQ0KDQpUQVNLIFtDb3B5IC90bXAveW9yaWNrLnR4dCB0byB0aGUgeW9yaWNrLWluaXQgaW5pdCBjb250YWluZXJdICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpUaHVyc2RheSAzMSBKdWx5IDIwMjUgIDAyOjAxOjMyICswMjAwICgwOjAwOjA2LjU5OCkgICAgICAgMDowMDoxMS4zNjYgKioqKioqKioqDQpjaGFuZ2VkOiBbbG9jYWxob3N0XQ0KDQpUQVNLIFtFeGVjdXRlIGEgY29tbWFuZF0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpUaHVyc2RheSAzMSBKdWx5IDIwMjUgIDAyOjAxOjM5ICswMjAwICgwOjAwOjA3LjAxNykgICAgICAgMDowMDoxOC4zODMgKioqKioqKioqDQpjaGFuZ2VkOiBbbG9jYWxob3N0XQ0KDQpUQVNLIFthbnNpYmxlLmJ1aWx0aW4uZGVidWddICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpUaHVyc2RheSAzMSBKdWx5IDIwMjUgIDAyOjAxOjQwICswMjAwICgwOjAwOjAwLjY0NCkgICAgICAgMDowMDoxOS4wMjggKioqKioqKioqDQpvazogW2xvY2FsaG9zdF0gPT4gew0KICAgICJleGVjX291dC5zdGRvdXQiOiAiSGkgdGhlcmVcbiINCn0NCg0KVEFTSyBbVHJ5IHRvIGNvcHkgL3RtcC95b3JpY2sudHh0IHRvIHRoZSB5b3JpY2stY29udGFpbmVyIGNvbnRhaW5lcl0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KVGh1cnNkYXkgMzEgSnVseSAyMDI1ICAwMjowMTo0MCArMDIwMCAoMDowMDowMC4wMjEpICAgICAgIDA6MDA6MTkuMDUwICoqKioqKioqKg0KZmF0YWw6IFtsb2NhbGhvc3RdOiBGQUlMRUQhID0+IHsNCiAgICAiY2hhbmdlZCI6IGZhbHNlDQp9DQoNCk1TRzoNCg0KUG9kIGNvbnRhaW5lciB5b3JpY2stY29udGFpbmVyIGlzIG5vdCBzdGFydGVkDQoNClBMQVkgUkVDQVAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmxvY2FsaG9zdCAgICAgICAgICAgICAgICAgIDogb2s9NiAgICBjaGFuZ2VkPTMgICAgdW5yZWFjaGFibGU9MCAgICBmYWlsZWQ9MSAgICBza2lwcGVkPTAgICAgcmVzY3VlZD0wICAgIGlnbm9yZWQ9MA0KDQpQbGF5Ym9vayBydW4gdG9vayAwIGRheXMsIDAgaG91cnMsIDAgbWludXRlcywgMjEgc2Vjb25kcw0KYGBgDQo= patchset: fcb6810bb6864b3c8c48488df8c3bac5adfe7852 pipeline: gate playbook_context: playbook_projects: trusted/project_0/github.com/ansible/zuul-config: canonical_name: github.com/ansible/zuul-config checkout: master commit: 9cec676fdc5b2a7fbf401767643a3c48545c082f trusted/project_1/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 161364dee411e33f70ba018dfb44a04bc1a6c4ed untrusted/project_0/github.com/ansible/ansible-zuul-jobs: canonical_name: github.com/ansible/ansible-zuul-jobs checkout: master commit: f22f22e05a919f76989979ce0a538febe2c4e73f untrusted/project_1/github.com/ansible/zuul-config: canonical_name: github.com/ansible/zuul-config checkout: master commit: 9cec676fdc5b2a7fbf401767643a3c48545c082f untrusted/project_2/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: 161364dee411e33f70ba018dfb44a04bc1a6c4ed playbooks: - path: untrusted/project_0/github.com/ansible/ansible-zuul-jobs/playbooks/ansible-galaxy-importer/run.yaml roles: - checkout: master checkout_description: playbook branch link_name: ansible/playbook_0/role_0/zuul-jobs link_target: untrusted/project_0/github.com/ansible/ansible-zuul-jobs role_path: ansible/playbook_0/role_0/zuul-jobs/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_1/zuul-config link_target: untrusted/project_1/github.com/ansible/zuul-config role_path: ansible/playbook_0/role_1/zuul-config/roles - checkout: master checkout_description: project default branch link_name: ansible/playbook_0/role_2/zuul-jobs link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs role_path: ansible/playbook_0/role_2/zuul-jobs/roles post_review: false project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/kubernetes.core name: ansible-collections/kubernetes.core short_name: kubernetes.core src_dir: src/github.com/ansible-collections/kubernetes.core projects: github.com/ansible-collections/kubernetes.core: canonical_hostname: github.com canonical_name: github.com/ansible-collections/kubernetes.core checkout: main checkout_description: zuul branch commit: 8e5df8b3833eb0362f6bf94fa91549dcf8171ac8 name: ansible-collections/kubernetes.core required: false short_name: kubernetes.core src_dir: src/github.com/ansible-collections/kubernetes.core github.com/ansible-network/releases: canonical_hostname: github.com canonical_name: github.com/ansible-network/releases checkout: master checkout_description: project default branch commit: 646b310655c531e4904be07f4ff8fc3a29addd09 name: ansible-network/releases required: true short_name: releases src_dir: src/github.com/ansible-network/releases ref: refs/pull/971/head resources: {} tenant: ansible timeout: 1800 topic: null voting: true zuul_use_fetch_output: true