all: children: zuul_unreachable: hosts: {} hosts: controller: ansible_connection: ssh ansible_host: 162.253.55.212 ansible_port: 22 ansible_python_interpreter: auto ansible_user: zuul nodepool: az: nova cloud: ansible-vexxhost external_id: bcd8cf5f-a9cf-46f8-b62e-45e0ecf34ecf host_id: 2f99c022f946186c175095e377ca85a11f435bb1f5089a3404320e15 interface_ip: 162.253.55.212 label: ansible-fedora-37-1vcpu private_ipv4: 192.168.0.202 private_ipv6: null provider: ansible-vexxhost-ca-ymq-1 public_ipv4: 162.253.55.212 public_ipv6: 2604:e100:1:0:f816:3eff:fee9:4bc2 region: ca-ymq-1 slot: null zuul_use_fetch_output: true vars: zuul: _inheritance_path: - '' - '' - '' ansible_version: '8' artifacts: - branch: main change: '227' job: build-ansible-collection metadata: type: zuul_manifest name: Zuul Manifest patchset: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 project: ansible-collections/community.libvirt url: https://88db22f764d608245641-87967278d383bc77229c281c7f872e8b.ssl.cf1.rackcdn.com/ansible/efa6da9b4c57445685b73d1ed8f014cf/zuul-manifest.json - branch: main change: '227' job: build-ansible-collection metadata: type: ansible_collection version: 2.0.1 name: community.libvirt patchset: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 project: ansible-collections/community.libvirt url: https://88db22f764d608245641-87967278d383bc77229c281c7f872e8b.ssl.cf1.rackcdn.com/ansible/efa6da9b4c57445685b73d1ed8f014cf/artifacts/community-libvirt-2.0.1.tar.gz attempts: 1 branch: main build: b1789f1453444ef0bb80a116a0a685b1 build_refs: - branch: main change: '227' change_message: "Common utils and livbirt secret\n\n##### SUMMARY\r\n\r\nThis is a proposal to switch to a python3 style. Use common class for the libvirt modules which supports diffs, check mode and can add be used to control ansible module during a runtime (able to exit on error/exception and produce explanation)\r\n\r\n##### ISSUE TYPE\r\n- New Module Pull Request\r\n\r\n##### COMPONENT NAME\r\nvirt_secret\r\n\r\n##### ADDITIONAL INFORMATION\r\n\r\n**module_utils/common.py** \r\ncontains base class **VirtModule** with initialization of libvirt connection and typical exit, check_imports and abstract methods. Additionally there is a dataclass **ModuleStatus** which is used to collect existing status information. Separate class is needed to be able to fine control behavior of the status report. Which then can be accessed just as class property.\r\n\r\n**libvirt_error_to_none** is example of the decorator which changes libvirterror exceptions into none output. Suitable when you try to get object from libvirt which does not exist. We should get None instead.\r\n\r\n**compare_dicts** and **compare_lists** provided as recursive objects comparsion functions which does not require external libraries.\r\n\r\n**data_as_dict** is used to produce normal dict from the dataclass object. Done recursively, so as result we get consumable by ansible dict.\r\n\r\n**module/virt_secret.py**\r\n\r\nThis is a new example module which was missing in this collection. It can manage libvirt secrets. Illustrate how above common classes can be used to write a module, add diff and check support.\r\n\r\nAll defined or received values converted to the dataclass **SecretElement** which can be compared and used to produce diff. It has xml representation used by libvirt api\r\n\r\n**SecretUsage** provided as exmaple, it can be used instead of str in appropriate filed of **SecretElement**\r\n\r\nRecent python version was taken due to minimal python version supported by ansible-core==2.17 is 3.10. But even 2.16 requires 3.10-3.12\r\n\r\nTests a basic as I don't know if this module is suitable or not. I might need help and guidance in this process.\r\n\r\nP.S. Sorry if I used incorrect approach or something which was not agreed, I don't know the other way to ask a question or purpose a suggestion except by sending a PR. " change_url: https://github.com/ansible-collections/community.libvirt/pull/227 commit_id: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 patchset: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/community.libvirt name: ansible-collections/community.libvirt short_name: community.libvirt src_dir: src/github.com/ansible-collections/community.libvirt topic: null buildset: 80904c6d506847e99ebf8cf5e4bfee94 buildset_refs: - branch: main change: '227' change_message: "Common utils and livbirt secret\n\n##### SUMMARY\r\n\r\nThis is a proposal to switch to a python3 style. Use common class for the libvirt modules which supports diffs, check mode and can add be used to control ansible module during a runtime (able to exit on error/exception and produce explanation)\r\n\r\n##### ISSUE TYPE\r\n- New Module Pull Request\r\n\r\n##### COMPONENT NAME\r\nvirt_secret\r\n\r\n##### ADDITIONAL INFORMATION\r\n\r\n**module_utils/common.py** \r\ncontains base class **VirtModule** with initialization of libvirt connection and typical exit, check_imports and abstract methods. Additionally there is a dataclass **ModuleStatus** which is used to collect existing status information. Separate class is needed to be able to fine control behavior of the status report. Which then can be accessed just as class property.\r\n\r\n**libvirt_error_to_none** is example of the decorator which changes libvirterror exceptions into none output. Suitable when you try to get object from libvirt which does not exist. We should get None instead.\r\n\r\n**compare_dicts** and **compare_lists** provided as recursive objects comparsion functions which does not require external libraries.\r\n\r\n**data_as_dict** is used to produce normal dict from the dataclass object. Done recursively, so as result we get consumable by ansible dict.\r\n\r\n**module/virt_secret.py**\r\n\r\nThis is a new example module which was missing in this collection. It can manage libvirt secrets. Illustrate how above common classes can be used to write a module, add diff and check support.\r\n\r\nAll defined or received values converted to the dataclass **SecretElement** which can be compared and used to produce diff. It has xml representation used by libvirt api\r\n\r\n**SecretUsage** provided as exmaple, it can be used instead of str in appropriate filed of **SecretElement**\r\n\r\nRecent python version was taken due to minimal python version supported by ansible-core==2.17 is 3.10. But even 2.16 requires 3.10-3.12\r\n\r\nTests a basic as I don't know if this module is suitable or not. I might need help and guidance in this process.\r\n\r\nP.S. Sorry if I used incorrect approach or something which was not agreed, I don't know the other way to ask a question or purpose a suggestion except by sending a PR. " change_url: https://github.com/ansible-collections/community.libvirt/pull/227 commit_id: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 patchset: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/community.libvirt name: ansible-collections/community.libvirt short_name: community.libvirt src_dir: src/github.com/ansible-collections/community.libvirt topic: null change: '227' change_message: "Common utils and livbirt secret\n\n##### SUMMARY\r\n\r\nThis is a proposal to switch to a python3 style. Use common class for the libvirt modules which supports diffs, check mode and can add be used to control ansible module during a runtime (able to exit on error/exception and produce explanation)\r\n\r\n##### ISSUE TYPE\r\n- New Module Pull Request\r\n\r\n##### COMPONENT NAME\r\nvirt_secret\r\n\r\n##### ADDITIONAL INFORMATION\r\n\r\n**module_utils/common.py** \r\ncontains base class **VirtModule** with initialization of libvirt connection and typical exit, check_imports and abstract methods. Additionally there is a dataclass **ModuleStatus** which is used to collect existing status information. Separate class is needed to be able to fine control behavior of the status report. Which then can be accessed just as class property.\r\n\r\n**libvirt_error_to_none** is example of the decorator which changes libvirterror exceptions into none output. Suitable when you try to get object from libvirt which does not exist. We should get None instead.\r\n\r\n**compare_dicts** and **compare_lists** provided as recursive objects comparsion functions which does not require external libraries.\r\n\r\n**data_as_dict** is used to produce normal dict from the dataclass object. Done recursively, so as result we get consumable by ansible dict.\r\n\r\n**module/virt_secret.py**\r\n\r\nThis is a new example module which was missing in this collection. It can manage libvirt secrets. Illustrate how above common classes can be used to write a module, add diff and check support.\r\n\r\nAll defined or received values converted to the dataclass **SecretElement** which can be compared and used to produce diff. It has xml representation used by libvirt api\r\n\r\n**SecretUsage** provided as exmaple, it can be used instead of str in appropriate filed of **SecretElement**\r\n\r\nRecent python version was taken due to minimal python version supported by ansible-core==2.17 is 3.10. But even 2.16 requires 3.10-3.12\r\n\r\nTests a basic as I don't know if this module is suitable or not. I might need help and guidance in this process.\r\n\r\nP.S. Sorry if I used incorrect approach or something which was not agreed, I don't know the other way to ask a question or purpose a suggestion except by sending a PR. " change_url: https://github.com/ansible-collections/community.libvirt/pull/227 child_jobs: [] commit_id: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 event_id: 191c7b30-cbed-11f0-8238-b14faea44f34 executor: hostname: ze01.softwarefactory-project.io inventory_file: /var/lib/zuul/builds/b1789f1453444ef0bb80a116a0a685b1/ansible/inventory.yaml log_root: /var/lib/zuul/builds/b1789f1453444ef0bb80a116a0a685b1/work/logs result_data_file: /var/lib/zuul/builds/b1789f1453444ef0bb80a116a0a685b1/work/results.json src_root: /var/lib/zuul/builds/b1789f1453444ef0bb80a116a0a685b1/work/src work_root: /var/lib/zuul/builds/b1789f1453444ef0bb80a116a0a685b1/work items: - branch: main change: '227' change_message: "Common utils and livbirt secret\n\n##### SUMMARY\r\n\r\nThis is a proposal to switch to a python3 style. Use common class for the libvirt modules which supports diffs, check mode and can add be used to control ansible module during a runtime (able to exit on error/exception and produce explanation)\r\n\r\n##### ISSUE TYPE\r\n- New Module Pull Request\r\n\r\n##### COMPONENT NAME\r\nvirt_secret\r\n\r\n##### ADDITIONAL INFORMATION\r\n\r\n**module_utils/common.py** \r\ncontains base class **VirtModule** with initialization of libvirt connection and typical exit, check_imports and abstract methods. Additionally there is a dataclass **ModuleStatus** which is used to collect existing status information. Separate class is needed to be able to fine control behavior of the status report. Which then can be accessed just as class property.\r\n\r\n**libvirt_error_to_none** is example of the decorator which changes libvirterror exceptions into none output. Suitable when you try to get object from libvirt which does not exist. We should get None instead.\r\n\r\n**compare_dicts** and **compare_lists** provided as recursive objects comparsion functions which does not require external libraries.\r\n\r\n**data_as_dict** is used to produce normal dict from the dataclass object. Done recursively, so as result we get consumable by ansible dict.\r\n\r\n**module/virt_secret.py**\r\n\r\nThis is a new example module which was missing in this collection. It can manage libvirt secrets. Illustrate how above common classes can be used to write a module, add diff and check support.\r\n\r\nAll defined or received values converted to the dataclass **SecretElement** which can be compared and used to produce diff. It has xml representation used by libvirt api\r\n\r\n**SecretUsage** provided as exmaple, it can be used instead of str in appropriate filed of **SecretElement**\r\n\r\nRecent python version was taken due to minimal python version supported by ansible-core==2.17 is 3.10. But even 2.16 requires 3.10-3.12\r\n\r\nTests a basic as I don't know if this module is suitable or not. I might need help and guidance in this process.\r\n\r\nP.S. Sorry if I used incorrect approach or something which was not agreed, I don't know the other way to ask a question or purpose a suggestion except by sending a PR. " change_url: https://github.com/ansible-collections/community.libvirt/pull/227 commit_id: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 patchset: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 project: canonical_hostname: github.com canonical_name: github.com/ansible-collections/community.libvirt name: ansible-collections/community.libvirt short_name: community.libvirt src_dir: src/github.com/ansible-collections/community.libvirt topic: null job: ansible-galaxy-importer jobtags: [] max_attempts: 3 message: Q29tbW9uIHV0aWxzIGFuZCBsaXZiaXJ0IHNlY3JldAoKIyMjIyMgU1VNTUFSWQ0KDQpUaGlzIGlzIGEgcHJvcG9zYWwgdG8gc3dpdGNoIHRvIGEgcHl0aG9uMyBzdHlsZS4gVXNlIGNvbW1vbiBjbGFzcyBmb3IgdGhlIGxpYnZpcnQgbW9kdWxlcyB3aGljaCBzdXBwb3J0cyBkaWZmcywgY2hlY2sgbW9kZSBhbmQgY2FuIGFkZCBiZSB1c2VkIHRvIGNvbnRyb2wgYW5zaWJsZSBtb2R1bGUgZHVyaW5nIGEgcnVudGltZSAoYWJsZSB0byBleGl0IG9uIGVycm9yL2V4Y2VwdGlvbiBhbmQgcHJvZHVjZSBleHBsYW5hdGlvbikNCg0KIyMjIyMgSVNTVUUgVFlQRQ0KLSBOZXcgTW9kdWxlIFB1bGwgUmVxdWVzdA0KDQojIyMjIyBDT01QT05FTlQgTkFNRQ0KdmlydF9zZWNyZXQNCg0KIyMjIyMgQURESVRJT05BTCBJTkZPUk1BVElPTg0KDQoqKm1vZHVsZV91dGlscy9jb21tb24ucHkqKiANCmNvbnRhaW5zIGJhc2UgY2xhc3MgKipWaXJ0TW9kdWxlKiogd2l0aCBpbml0aWFsaXphdGlvbiBvZiBsaWJ2aXJ0IGNvbm5lY3Rpb24gYW5kIHR5cGljYWwgZXhpdCwgY2hlY2tfaW1wb3J0cyBhbmQgYWJzdHJhY3QgbWV0aG9kcy4gQWRkaXRpb25hbGx5IHRoZXJlIGlzIGEgZGF0YWNsYXNzICoqTW9kdWxlU3RhdHVzKiogd2hpY2ggaXMgdXNlZCB0byBjb2xsZWN0IGV4aXN0aW5nIHN0YXR1cyBpbmZvcm1hdGlvbi4gU2VwYXJhdGUgY2xhc3MgaXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gZmluZSBjb250cm9sIGJlaGF2aW9yIG9mIHRoZSBzdGF0dXMgcmVwb3J0LiBXaGljaCB0aGVuIGNhbiBiZSBhY2Nlc3NlZCBqdXN0IGFzIGNsYXNzIHByb3BlcnR5Lg0KDQoqKmxpYnZpcnRfZXJyb3JfdG9fbm9uZSoqIGlzIGV4YW1wbGUgb2YgdGhlIGRlY29yYXRvciB3aGljaCBjaGFuZ2VzIGxpYnZpcnRlcnJvciBleGNlcHRpb25zIGludG8gbm9uZSBvdXRwdXQuIFN1aXRhYmxlIHdoZW4geW91IHRyeSB0byBnZXQgb2JqZWN0IGZyb20gbGlidmlydCB3aGljaCBkb2VzIG5vdCBleGlzdC4gV2Ugc2hvdWxkIGdldCBOb25lIGluc3RlYWQuDQoNCioqY29tcGFyZV9kaWN0cyoqIGFuZCAqKmNvbXBhcmVfbGlzdHMqKiBwcm92aWRlZCBhcyByZWN1cnNpdmUgb2JqZWN0cyBjb21wYXJzaW9uIGZ1bmN0aW9ucyB3aGljaCBkb2VzIG5vdCByZXF1aXJlIGV4dGVybmFsIGxpYnJhcmllcy4NCg0KKipkYXRhX2FzX2RpY3QqKiBpcyB1c2VkIHRvIHByb2R1Y2Ugbm9ybWFsIGRpY3QgZnJvbSB0aGUgZGF0YWNsYXNzIG9iamVjdC4gRG9uZSByZWN1cnNpdmVseSwgc28gYXMgcmVzdWx0IHdlIGdldCBjb25zdW1hYmxlIGJ5IGFuc2libGUgZGljdC4NCg0KKiptb2R1bGUvdmlydF9zZWNyZXQucHkqKg0KDQpUaGlzIGlzIGEgbmV3IGV4YW1wbGUgbW9kdWxlIHdoaWNoIHdhcyBtaXNzaW5nIGluIHRoaXMgY29sbGVjdGlvbi4gSXQgY2FuIG1hbmFnZSBsaWJ2aXJ0IHNlY3JldHMuIElsbHVzdHJhdGUgaG93IGFib3ZlIGNvbW1vbiBjbGFzc2VzIGNhbiBiZSB1c2VkIHRvIHdyaXRlIGEgbW9kdWxlLCBhZGQgZGlmZiBhbmQgY2hlY2sgc3VwcG9ydC4NCg0KQWxsIGRlZmluZWQgb3IgcmVjZWl2ZWQgdmFsdWVzIGNvbnZlcnRlZCB0byB0aGUgZGF0YWNsYXNzICoqU2VjcmV0RWxlbWVudCoqIHdoaWNoIGNhbiBiZSBjb21wYXJlZCBhbmQgdXNlZCB0byBwcm9kdWNlIGRpZmYuIEl0IGhhcyB4bWwgcmVwcmVzZW50YXRpb24gdXNlZCBieSBsaWJ2aXJ0IGFwaQ0KDQoqKlNlY3JldFVzYWdlKiogcHJvdmlkZWQgYXMgZXhtYXBsZSwgaXQgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBzdHIgaW4gYXBwcm9wcmlhdGUgZmlsZWQgb2YgKipTZWNyZXRFbGVtZW50KioNCg0KUmVjZW50IHB5dGhvbiB2ZXJzaW9uIHdhcyB0YWtlbiBkdWUgdG8gbWluaW1hbCBweXRob24gdmVyc2lvbiBzdXBwb3J0ZWQgYnkgYW5zaWJsZS1jb3JlPT0yLjE3IGlzIDMuMTAuIEJ1dCBldmVuIDIuMTYgcmVxdWlyZXMgMy4xMC0zLjEyDQoNClRlc3RzIGEgYmFzaWMgYXMgSSBkb24ndCBrbm93IGlmIHRoaXMgbW9kdWxlIGlzIHN1aXRhYmxlIG9yIG5vdC4gSSBtaWdodCBuZWVkIGhlbHAgYW5kIGd1aWRhbmNlIGluIHRoaXMgcHJvY2Vzcy4NCg0KUC5TLiBTb3JyeSBpZiBJIHVzZWQgaW5jb3JyZWN0IGFwcHJvYWNoIG9yIHNvbWV0aGluZyB3aGljaCB3YXMgbm90IGFncmVlZCwgSSBkb24ndCBrbm93IHRoZSBvdGhlciB3YXkgdG8gYXNrIGEgcXVlc3Rpb24gb3IgcHVycG9zZSBhIHN1Z2dlc3Rpb24gZXhjZXB0IGJ5IHNlbmRpbmcgYSBQUi4g patchset: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 pipeline: third-party-check playbook_context: playbook_projects: trusted/project_0/github.com/ansible/zuul-config: canonical_name: github.com/ansible/zuul-config checkout: master commit: 3e667f4d3a5f14620cbe10b052c77698fa883471 trusted/project_1/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: e566d354c9dede33c86ed646371fa44dfc8796c5 untrusted/project_0/github.com/ansible/ansible-zuul-jobs: canonical_name: github.com/ansible/ansible-zuul-jobs checkout: master commit: e7ff49de526383ec1701720d6aed921160ec3931 untrusted/project_1/github.com/ansible/zuul-config: canonical_name: github.com/ansible/zuul-config checkout: master commit: 3e667f4d3a5f14620cbe10b052c77698fa883471 untrusted/project_2/opendev.org/zuul/zuul-jobs: canonical_name: opendev.org/zuul/zuul-jobs checkout: master commit: e566d354c9dede33c86ed646371fa44dfc8796c5 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/community.libvirt name: ansible-collections/community.libvirt short_name: community.libvirt src_dir: src/github.com/ansible-collections/community.libvirt projects: github.com/ansible-collections/community.libvirt: canonical_hostname: github.com canonical_name: github.com/ansible-collections/community.libvirt checkout: main checkout_description: zuul branch commit: 2f6ff68a1a6de84f8857640aac21e1376ff2fdb5 name: ansible-collections/community.libvirt required: false short_name: community.libvirt src_dir: src/github.com/ansible-collections/community.libvirt 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/227/head resources: {} tenant: ansible timeout: 1800 topic: null voting: true zuul_use_fetch_output: true