From d65f7dcc0271c81cf28a83d1c777770ca217677116fcdf261127ae95da1c5153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?= Date: Wed, 13 Oct 2021 15:24:29 +0000 Subject: [PATCH] osc copypac from project:systemsmanagement:saltstack:testing package:salt revision:423 OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:saltstack/salt?expand=0&rev=192 --- ...nsider-skipped-targets-as-failed-for.patch | 1451 +++++++++++++++++ _lastrevision | 2 +- ...hen-calling-manage.not_alive-runners.patch | 81 + ...ssues-with-salt-ssh-s-extra-filerefs.patch | 139 ++ salt.changes | 24 + salt.spec | 10 + 6 files changed, 1706 insertions(+), 1 deletion(-) create mode 100644 3003.3-do-not-consider-skipped-targets-as-failed-for.patch create mode 100644 fix-crash-when-calling-manage.not_alive-runners.patch create mode 100644 fix-issues-with-salt-ssh-s-extra-filerefs.patch diff --git a/3003.3-do-not-consider-skipped-targets-as-failed-for.patch b/3003.3-do-not-consider-skipped-targets-as-failed-for.patch new file mode 100644 index 0000000..2d95be7 --- /dev/null +++ b/3003.3-do-not-consider-skipped-targets-as-failed-for.patch @@ -0,0 +1,1451 @@ +From b279ec17a06619c97d9fbec215c7dd1ec3af088e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?= + +Date: Wed, 6 Oct 2021 09:21:42 +0100 +Subject: [PATCH] 3003.3: Do not consider skipped targets as failed for + ansible.playbooks state (bsc#1190446) (#436) + +* Do not consider skipped targets as failed for ansible.playbooks state (bsc#1190446) + +* Fix unit test after backport + +* Fix unit test + +* Fix remaining problems in unit tests after backport +--- + salt/states/ansiblegate.py | 19 +- + .../success_example_with_skipped.json | 1320 +++++++++++++++++ + tests/unit/states/test_ansiblegate.py | 33 +- + 3 files changed, 1356 insertions(+), 16 deletions(-) + create mode 100644 tests/unit/files/playbooks/success_example_with_skipped.json + +diff --git a/salt/states/ansiblegate.py b/salt/states/ansiblegate.py +index bd00653928..d97a0ebb5b 100644 +--- a/salt/states/ansiblegate.py ++++ b/salt/states/ansiblegate.py +@@ -188,19 +188,13 @@ def playbooks(name, rundir=None, git_repo=None, git_kwargs=None, ansible_kwargs= + ret["result"] = False + ret["changes"] = {} + elif all( +- not check["changed"] +- and not check["failures"] +- and not check["unreachable"] +- and not check["skipped"] ++ not check["changed"] and not check["failures"] and not check["unreachable"] + for check in checks["stats"].values() + ): + ret["comment"] = "No changes to be made from playbook {}".format(name) + ret["result"] = True + elif any( +- check["changed"] +- and not check["failures"] +- and not check["unreachable"] +- and not check["skipped"] ++ check["changed"] and not check["failures"] and not check["unreachable"] + for check in checks["stats"].values() + ): + ret["comment"] = "Changes will be made from playbook {}".format(name) +@@ -221,10 +215,7 @@ def playbooks(name, rundir=None, git_repo=None, git_kwargs=None, ansible_kwargs= + ret["result"] = False + ret["changes"] = {} + elif all( +- not check["changed"] +- and not check["failures"] +- and not check["unreachable"] +- and not check["skipped"] ++ not check["changed"] and not check["failures"] and not check["unreachable"] + for check in results["stats"].values() + ): + ret["comment"] = "No changes to be made from playbook {}".format(name) +@@ -233,9 +224,7 @@ def playbooks(name, rundir=None, git_repo=None, git_kwargs=None, ansible_kwargs= + else: + ret["changes"] = _changes(results) + ret["result"] = all( +- not check["failures"] +- and not check["unreachable"] +- and not check["skipped"] ++ not check["failures"] and not check["unreachable"] + for check in results["stats"].values() + ) + if ret["result"]: +diff --git a/tests/unit/files/playbooks/success_example_with_skipped.json b/tests/unit/files/playbooks/success_example_with_skipped.json +new file mode 100644 +index 0000000000..21bdb290c1 +--- /dev/null ++++ b/tests/unit/files/playbooks/success_example_with_skipped.json +@@ -0,0 +1,1320 @@ ++{ ++ "custom_stats": {}, ++ "global_custom_stats": {}, ++ "plays": [ ++ { ++ "play": { ++ "duration": { ++ "end": "2021-10-01T09:36:32.534379Z", ++ "start": "2021-10-01T09:36:22.615869Z" ++ }, ++ "id": "525400d6-b9c8-afcf-67b6-000000000007", ++ "name": "all" ++ }, ++ "tasks": [ ++ { ++ "hosts": { ++ "uyuni-stable-min-centos7.tf.local": { ++ "_ansible_no_log": false, ++ "_ansible_verbose_override": true, ++ "action": "gather_facts", ++ "ansible_facts": { ++ "ansible_all_ipv4_addresses": [ ++ "192.168.122.250" ++ ], ++ "ansible_all_ipv6_addresses": [ ++ "fe80::5054:ff:fe6e:3554" ++ ], ++ "ansible_apparmor": { ++ "status": "disabled" ++ }, ++ "ansible_architecture": "x86_64", ++ "ansible_bios_date": "04/01/2014", ++ "ansible_bios_version": "rel-1.14.0-0-g155821a-rebuilt.opensuse.org", ++ "ansible_cmdline": { ++ "BOOT_IMAGE": "/boot/vmlinuz-3.10.0-1127.el7.x86_64", ++ "LANG": "en_US.UTF-8", ++ "console": "ttyS0", ++ "crashkernel": "auto", ++ "net.ifnames": "0", ++ "ro": true, ++ "root": "UUID=6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02" ++ }, ++ "ansible_date_time": { ++ "date": "2021-10-01", ++ "day": "01", ++ "epoch": "1633080984", ++ "hour": "11", ++ "iso8601": "2021-10-01T09:36:24Z", ++ "iso8601_basic": "20211001T113624352399", ++ "iso8601_basic_short": "20211001T113624", ++ "iso8601_micro": "2021-10-01T09:36:24.352399Z", ++ "minute": "36", ++ "month": "10", ++ "second": "24", ++ "time": "11:36:24", ++ "tz": "CEST", ++ "tz_offset": "+0200", ++ "weekday": "Friday", ++ "weekday_number": "5", ++ "weeknumber": "39", ++ "year": "2021" ++ }, ++ "ansible_default_ipv4": { ++ "address": "192.168.122.250", ++ "alias": "eth0", ++ "broadcast": "192.168.122.255", ++ "gateway": "192.168.122.1", ++ "interface": "eth0", ++ "macaddress": "52:54:00:6e:35:54", ++ "mtu": 1500, ++ "netmask": "255.255.255.0", ++ "network": "192.168.122.0", ++ "type": "ether" ++ }, ++ "ansible_default_ipv6": {}, ++ "ansible_device_links": { ++ "ids": { ++ "sr0": [ ++ "ata-QEMU_DVD-ROM_QM00004" ++ ] ++ }, ++ "labels": { ++ "sr0": [ ++ "cidata" ++ ] ++ }, ++ "masters": {}, ++ "uuids": { ++ "sr0": [ ++ "2021-05-28-09-32-38-69" ++ ], ++ "vda1": [ ++ "6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02" ++ ] ++ } ++ }, ++ "ansible_devices": { ++ "sr0": { ++ "holders": [], ++ "host": "", ++ "links": { ++ "ids": [ ++ "ata-QEMU_DVD-ROM_QM00004" ++ ], ++ "labels": [ ++ "cidata" ++ ], ++ "masters": [], ++ "uuids": [ ++ "2021-05-28-09-32-38-69" ++ ] ++ }, ++ "model": "QEMU DVD-ROM", ++ "partitions": {}, ++ "removable": "1", ++ "rotational": "1", ++ "sas_address": null, ++ "sas_device_handle": null, ++ "scheduler_mode": "deadline", ++ "sectors": "732", ++ "sectorsize": "2048", ++ "size": "366.00 KB", ++ "support_discard": "0", ++ "vendor": "QEMU", ++ "virtual": 1 ++ }, ++ "vda": { ++ "holders": [], ++ "host": "", ++ "links": { ++ "ids": [], ++ "labels": [], ++ "masters": [], ++ "uuids": [] ++ }, ++ "model": null, ++ "partitions": { ++ "vda1": { ++ "holders": [], ++ "links": { ++ "ids": [], ++ "labels": [], ++ "masters": [], ++ "uuids": [ ++ "6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02" ++ ] ++ }, ++ "sectors": "419428319", ++ "sectorsize": 512, ++ "size": "200.00 GB", ++ "start": "2048", ++ "uuid": "6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02" ++ } ++ }, ++ "removable": "0", ++ "rotational": "1", ++ "sas_address": null, ++ "sas_device_handle": null, ++ "scheduler_mode": "mq-deadline", ++ "sectors": "419430400", ++ "sectorsize": "512", ++ "size": "200.00 GB", ++ "support_discard": "0", ++ "vendor": "0x1af4", ++ "virtual": 1 ++ } ++ }, ++ "ansible_distribution": "CentOS", ++ "ansible_distribution_file_parsed": true, ++ "ansible_distribution_file_path": "/etc/redhat-release", ++ "ansible_distribution_file_variety": "RedHat", ++ "ansible_distribution_major_version": "7", ++ "ansible_distribution_release": "Core", ++ "ansible_distribution_version": "7.8", ++ "ansible_dns": { ++ "nameservers": [ ++ "192.168.122.1" ++ ] ++ }, ++ "ansible_domain": "tf.local", ++ "ansible_effective_group_id": 0, ++ "ansible_effective_user_id": 0, ++ "ansible_env": { ++ "HOME": "/root", ++ "LANG": "C", ++ "LC_ADDRESS": "C", ++ "LC_ALL": "C", ++ "LC_COLLATE": "C", ++ "LC_CTYPE": "C.UTF-8", ++ "LC_IDENTIFICATION": "C", ++ "LC_MEASUREMENT": "C", ++ "LC_MESSAGES": "C", ++ "LC_MONETARY": "C", ++ "LC_NAME": "C", ++ "LC_NUMERIC": "C", ++ "LC_PAPER": "C", ++ "LC_TELEPHONE": "C", ++ "LC_TIME": "C", ++ "LOGNAME": "root", ++ "LS_COLORS": "rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:", ++ "MAIL": "/var/mail/root", ++ "PATH": "/sbin:/bin:/usr/sbin:/usr/bin", ++ "PWD": "/root", ++ "SHELL": "/bin/bash", ++ "SHLVL": "1", ++ "SUDO_COMMAND": "/bin/sh -c echo BECOME-SUCCESS-tyqutlgpttzahspvugthhwbwqizpflyl ; /usr/bin/python /root/.ansible/tmp/ansible-tmp-1633080982.7515817-3386-201873769122806/AnsiballZ_setup.py", ++ "SUDO_GID": "0", ++ "SUDO_UID": "0", ++ "SUDO_USER": "root", ++ "TERM": "xterm-256color", ++ "USER": "root", ++ "USERNAME": "root", ++ "XDG_RUNTIME_DIR": "/run/user/0", ++ "XDG_SESSION_ID": "1", ++ "_": "/usr/bin/python" ++ }, ++ "ansible_eth0": { ++ "active": true, ++ "device": "eth0", ++ "features": { ++ "busy_poll": "off [fixed]", ++ "fcoe_mtu": "off [fixed]", ++ "generic_receive_offload": "on", ++ "generic_segmentation_offload": "on", ++ "highdma": "on [fixed]", ++ "hw_tc_offload": "off [fixed]", ++ "l2_fwd_offload": "off [fixed]", ++ "large_receive_offload": "off [fixed]", ++ "loopback": "off [fixed]", ++ "netns_local": "off [fixed]", ++ "ntuple_filters": "off [fixed]", ++ "receive_hashing": "off [fixed]", ++ "rx_all": "off [fixed]", ++ "rx_checksumming": "on [fixed]", ++ "rx_fcs": "off [fixed]", ++ "rx_gro_hw": "off [fixed]", ++ "rx_udp_tunnel_port_offload": "off [fixed]", ++ "rx_vlan_filter": "on [fixed]", ++ "rx_vlan_offload": "off [fixed]", ++ "rx_vlan_stag_filter": "off [fixed]", ++ "rx_vlan_stag_hw_parse": "off [fixed]", ++ "scatter_gather": "on", ++ "tcp_segmentation_offload": "on", ++ "tx_checksum_fcoe_crc": "off [fixed]", ++ "tx_checksum_ip_generic": "on", ++ "tx_checksum_ipv4": "off [fixed]", ++ "tx_checksum_ipv6": "off [fixed]", ++ "tx_checksum_sctp": "off [fixed]", ++ "tx_checksumming": "on", ++ "tx_fcoe_segmentation": "off [fixed]", ++ "tx_gre_csum_segmentation": "off [fixed]", ++ "tx_gre_segmentation": "off [fixed]", ++ "tx_gso_partial": "off [fixed]", ++ "tx_gso_robust": "off [fixed]", ++ "tx_ipip_segmentation": "off [fixed]", ++ "tx_lockless": "off [fixed]", ++ "tx_nocache_copy": "off", ++ "tx_scatter_gather": "on", ++ "tx_scatter_gather_fraglist": "off [fixed]", ++ "tx_sctp_segmentation": "off [fixed]", ++ "tx_sit_segmentation": "off [fixed]", ++ "tx_tcp6_segmentation": "on", ++ "tx_tcp_ecn_segmentation": "on", ++ "tx_tcp_mangleid_segmentation": "off", ++ "tx_tcp_segmentation": "on", ++ "tx_udp_tnl_csum_segmentation": "off [fixed]", ++ "tx_udp_tnl_segmentation": "off [fixed]", ++ "tx_vlan_offload": "off [fixed]", ++ "tx_vlan_stag_hw_insert": "off [fixed]", ++ "udp_fragmentation_offload": "on", ++ "vlan_challenged": "off [fixed]" ++ }, ++ "hw_timestamp_filters": [], ++ "ipv4": { ++ "address": "192.168.122.250", ++ "broadcast": "192.168.122.255", ++ "netmask": "255.255.255.0", ++ "network": "192.168.122.0" ++ }, ++ "ipv6": [ ++ { ++ "address": "fe80::5054:ff:fe6e:3554", ++ "prefix": "64", ++ "scope": "link" ++ } ++ ], ++ "macaddress": "52:54:00:6e:35:54", ++ "module": "virtio_net", ++ "mtu": 1500, ++ "pciid": "virtio0", ++ "promisc": false, ++ "timestamping": [ ++ "rx_software", ++ "software" ++ ], ++ "type": "ether" ++ }, ++ "ansible_fibre_channel_wwn": [], ++ "ansible_fips": false, ++ "ansible_form_factor": "Other", ++ "ansible_fqdn": "uyuni-stable-min-centos7.tf.local", ++ "ansible_hostname": "uyuni-stable-min-centos7", ++ "ansible_hostnqn": "", ++ "ansible_interfaces": [ ++ "lo", ++ "eth0" ++ ], ++ "ansible_is_chroot": false, ++ "ansible_iscsi_iqn": "", ++ "ansible_kernel": "3.10.0-1127.el7.x86_64", ++ "ansible_kernel_version": "#1 SMP Tue Mar 31 23:36:51 UTC 2020", ++ "ansible_lo": { ++ "active": true, ++ "device": "lo", ++ "features": { ++ "busy_poll": "off [fixed]", ++ "fcoe_mtu": "off [fixed]", ++ "generic_receive_offload": "on", ++ "generic_segmentation_offload": "on", ++ "highdma": "on [fixed]", ++ "hw_tc_offload": "off [fixed]", ++ "l2_fwd_offload": "off [fixed]", ++ "large_receive_offload": "off [fixed]", ++ "loopback": "on [fixed]", ++ "netns_local": "on [fixed]", ++ "ntuple_filters": "off [fixed]", ++ "receive_hashing": "off [fixed]", ++ "rx_all": "off [fixed]", ++ "rx_checksumming": "on [fixed]", ++ "rx_fcs": "off [fixed]", ++ "rx_gro_hw": "off [fixed]", ++ "rx_udp_tunnel_port_offload": "off [fixed]", ++ "rx_vlan_filter": "off [fixed]", ++ "rx_vlan_offload": "off [fixed]", ++ "rx_vlan_stag_filter": "off [fixed]", ++ "rx_vlan_stag_hw_parse": "off [fixed]", ++ "scatter_gather": "on", ++ "tcp_segmentation_offload": "on", ++ "tx_checksum_fcoe_crc": "off [fixed]", ++ "tx_checksum_ip_generic": "on [fixed]", ++ "tx_checksum_ipv4": "off [fixed]", ++ "tx_checksum_ipv6": "off [fixed]", ++ "tx_checksum_sctp": "on [fixed]", ++ "tx_checksumming": "on", ++ "tx_fcoe_segmentation": "off [fixed]", ++ "tx_gre_csum_segmentation": "off [fixed]", ++ "tx_gre_segmentation": "off [fixed]", ++ "tx_gso_partial": "off [fixed]", ++ "tx_gso_robust": "off [fixed]", ++ "tx_ipip_segmentation": "off [fixed]", ++ "tx_lockless": "on [fixed]", ++ "tx_nocache_copy": "off [fixed]", ++ "tx_scatter_gather": "on [fixed]", ++ "tx_scatter_gather_fraglist": "on [fixed]", ++ "tx_sctp_segmentation": "on", ++ "tx_sit_segmentation": "off [fixed]", ++ "tx_tcp6_segmentation": "on", ++ "tx_tcp_ecn_segmentation": "on", ++ "tx_tcp_mangleid_segmentation": "on", ++ "tx_tcp_segmentation": "on", ++ "tx_udp_tnl_csum_segmentation": "off [fixed]", ++ "tx_udp_tnl_segmentation": "off [fixed]", ++ "tx_vlan_offload": "off [fixed]", ++ "tx_vlan_stag_hw_insert": "off [fixed]", ++ "udp_fragmentation_offload": "on", ++ "vlan_challenged": "on [fixed]" ++ }, ++ "hw_timestamp_filters": [], ++ "ipv4": { ++ "address": "127.0.0.1", ++ "broadcast": "", ++ "netmask": "255.0.0.0", ++ "network": "127.0.0.0" ++ }, ++ "ipv6": [ ++ { ++ "address": "::1", ++ "prefix": "128", ++ "scope": "host" ++ } ++ ], ++ "mtu": 65536, ++ "promisc": false, ++ "timestamping": [ ++ "rx_software", ++ "software" ++ ], ++ "type": "loopback" ++ }, ++ "ansible_local": {}, ++ "ansible_lsb": {}, ++ "ansible_machine": "x86_64", ++ "ansible_machine_id": "2622d9aee28c3a2356a756fa60b0b96e", ++ "ansible_memfree_mb": 612, ++ "ansible_memory_mb": { ++ "nocache": { ++ "free": 789, ++ "used": 201 ++ }, ++ "real": { ++ "free": 612, ++ "total": 990, ++ "used": 378 ++ }, ++ "swap": { ++ "cached": 0, ++ "free": 0, ++ "total": 0, ++ "used": 0 ++ } ++ }, ++ "ansible_memtotal_mb": 990, ++ "ansible_mounts": [ ++ { ++ "block_available": 52122135, ++ "block_size": 4096, ++ "block_total": 52425979, ++ "block_used": 303844, ++ "device": "/dev/vda1", ++ "fstype": "xfs", ++ "inode_available": 104821638, ++ "inode_total": 104857024, ++ "inode_used": 35386, ++ "mount": "/", ++ "options": "rw,seclabel,relatime,attr2,inode64,noquota", ++ "size_available": 213492264960, ++ "size_total": 214736809984, ++ "uuid": "6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02" ++ } ++ ], ++ "ansible_nodename": "uyuni-stable-min-centos7", ++ "ansible_os_family": "RedHat", ++ "ansible_pkg_mgr": "yum", ++ "ansible_proc_cmdline": { ++ "BOOT_IMAGE": "/boot/vmlinuz-3.10.0-1127.el7.x86_64", ++ "LANG": "en_US.UTF-8", ++ "console": [ ++ "tty0", ++ "ttyS0,115200n8", ++ "ttyS0" ++ ], ++ "crashkernel": "auto", ++ "net.ifnames": "0", ++ "ro": true, ++ "root": "UUID=6cd50e51-cfc6-40b9-9ec5-f32fa2e4ff02" ++ }, ++ "ansible_processor": [ ++ "0", ++ "GenuineIntel", ++ "QEMU Virtual CPU version 2.5+" ++ ], ++ "ansible_processor_cores": 1, ++ "ansible_processor_count": 1, ++ "ansible_processor_threads_per_core": 1, ++ "ansible_processor_vcpus": 1, ++ "ansible_product_name": "Standard PC (i440FX + PIIX, 1996)", ++ "ansible_product_serial": "NA", ++ "ansible_product_uuid": "5DCE1DC7-FB62-4199-8044-993382A0D198", ++ "ansible_product_version": "pc-i440fx-6.0", ++ "ansible_python": { ++ "executable": "/usr/bin/python", ++ "has_sslcontext": true, ++ "type": "CPython", ++ "version": { ++ "major": 2, ++ "micro": 5, ++ "minor": 7, ++ "releaselevel": "final", ++ "serial": 0 ++ }, ++ "version_info": [ ++ 2, ++ 7, ++ 5, ++ "final", ++ 0 ++ ] ++ }, ++ "ansible_python_version": "2.7.5", ++ "ansible_real_group_id": 0, ++ "ansible_real_user_id": 0, ++ "ansible_selinux": { ++ "config_mode": "enforcing", ++ "mode": "enforcing", ++ "policyvers": 31, ++ "status": "enabled", ++ "type": "targeted" ++ }, ++ "ansible_selinux_python_present": true, ++ "ansible_service_mgr": "systemd", ++ "ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBNT/qKM5GfECZrKpKSipoy+FIVJCly6GmmiMtTDnSRhU++rz7FntpL9U+AWWdhqi5OA+7y9kEcSJ5StmwTIWeQ=", ++ "ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAIFPWtQ7R5nCp1n0cKpY3S5VcEzF063uJ92ohu5OBA9Dv", ++ "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABAQC7jW8ES08/SJJ5dAKzMqBXeU5RHNKsfRGyiE+ERhZ7hsQ7qVSUAN/r1wpyqGrG2m426h4OMbme91dIpGMMvbKSBHgyVb8HdddHBxBz8hbvml4foujyfe2AkK4S0KxXzmkAOPZDweF1QOdJh4CN/nKyw/Ec1HMruqTECw1CeyamewI/GASzyvMogNZb564zsyI4RtNw5X1ztdAMcvw2Zb/8Vs4OPbTjjrZr/urXxlwVQWvlfFPj46puSjuuhKW4lIVuNZRopwyGeI7MR6ua1k812GW25I7THl3m9iqbZVgXDhyUZI72fm1Q4Ct6uV8ZUYcwlayL1MmPE0AQpXRG6Ls7", ++ "ansible_swapfree_mb": 0, ++ "ansible_swaptotal_mb": 0, ++ "ansible_system": "Linux", ++ "ansible_system_capabilities": [ ++ "cap_chown", ++ "cap_dac_override", ++ "cap_dac_read_search", ++ "cap_fowner", ++ "cap_fsetid", ++ "cap_kill", ++ "cap_setgid", ++ "cap_setuid", ++ "cap_setpcap", ++ "cap_linux_immutable", ++ "cap_net_bind_service", ++ "cap_net_broadcast", ++ "cap_net_admin", ++ "cap_net_raw", ++ "cap_ipc_lock", ++ "cap_ipc_owner", ++ "cap_sys_module", ++ "cap_sys_rawio", ++ "cap_sys_chroot", ++ "cap_sys_ptrace", ++ "cap_sys_pacct", ++ "cap_sys_admin", ++ "cap_sys_boot", ++ "cap_sys_nice", ++ "cap_sys_resource", ++ "cap_sys_time", ++ "cap_sys_tty_config", ++ "cap_mknod", ++ "cap_lease", ++ "cap_audit_write", ++ "cap_audit_control", ++ "cap_setfcap", ++ "cap_mac_override", ++ "cap_mac_admin", ++ "cap_syslog", ++ "35", ++ "36+ep" ++ ], ++ "ansible_system_capabilities_enforced": "True", ++ "ansible_system_vendor": "QEMU", ++ "ansible_uptime_seconds": 212, ++ "ansible_user_dir": "/root", ++ "ansible_user_gecos": "root", ++ "ansible_user_gid": 0, ++ "ansible_user_id": "root", ++ "ansible_user_shell": "/bin/bash", ++ "ansible_user_uid": 0, ++ "ansible_userspace_architecture": "x86_64", ++ "ansible_userspace_bits": "64", ++ "ansible_virtualization_role": "guest", ++ "ansible_virtualization_type": "kvm", ++ "discovered_interpreter_python": "/usr/bin/python", ++ "gather_subset": [ ++ "all" ++ ], ++ "module_setup": true ++ }, ++ "changed": false, ++ "deprecations": [], ++ "warnings": [] ++ }, ++ "uyuni-stable-min-sles15sp3.tf.local": { ++ "_ansible_no_log": false, ++ "_ansible_verbose_override": true, ++ "action": "gather_facts", ++ "ansible_facts": { ++ "ansible_all_ipv4_addresses": [ ++ "192.168.122.210" ++ ], ++ "ansible_all_ipv6_addresses": [ ++ "fe80::5054:ff:fed6:b9c8" ++ ], ++ "ansible_apparmor": { ++ "status": "enabled" ++ }, ++ "ansible_architecture": "x86_64", ++ "ansible_bios_date": "04/01/2014", ++ "ansible_bios_version": "rel-1.14.0-0-g155821a-rebuilt.opensuse.org", ++ "ansible_cmdline": { ++ "BOOT_IMAGE": "/boot/vmlinuz-5.3.18-59.24-default", ++ "console": "tty0", ++ "net.ifnames": "0", ++ "plymouth.enable": "0", ++ "quiet": true, ++ "root": "UUID=2c17af10-fc7c-4768-ab24-e6700f2dc588" ++ }, ++ "ansible_date_time": { ++ "date": "2021-10-01", ++ "day": "01", ++ "epoch": "1633080985", ++ "hour": "11", ++ "iso8601": "2021-10-01T09:36:25Z", ++ "iso8601_basic": "20211001T113625125429", ++ "iso8601_basic_short": "20211001T113625", ++ "iso8601_micro": "2021-10-01T09:36:25.125429Z", ++ "minute": "36", ++ "month": "10", ++ "second": "25", ++ "time": "11:36:25", ++ "tz": "CEST", ++ "tz_offset": "+0200", ++ "weekday": "Friday", ++ "weekday_number": "5", ++ "weeknumber": "39", ++ "year": "2021" ++ }, ++ "ansible_default_ipv4": { ++ "address": "192.168.122.210", ++ "alias": "eth0", ++ "broadcast": "192.168.122.255", ++ "gateway": "192.168.122.1", ++ "interface": "eth0", ++ "macaddress": "52:54:00:d6:b9:c8", ++ "mtu": 1500, ++ "netmask": "255.255.255.0", ++ "network": "192.168.122.0", ++ "type": "ether" ++ }, ++ "ansible_default_ipv6": {}, ++ "ansible_device_links": { ++ "ids": { ++ "sr0": [ ++ "ata-QEMU_DVD-ROM_QM00004", ++ "scsi-0QEMU_QEMU_DVD-ROM_QM00004", ++ "scsi-1ATA_QEMU_DVD-ROM_QM00004" ++ ] ++ }, ++ "labels": { ++ "sr0": [ ++ "cidata" ++ ], ++ "vda2": [ ++ "EFI" ++ ], ++ "vda3": [ ++ "ROOT" ++ ] ++ }, ++ "masters": {}, ++ "uuids": { ++ "sr0": [ ++ "2021-09-21-09-21-51-42" ++ ], ++ "vda2": [ ++ "DB16-E900" ++ ], ++ "vda3": [ ++ "2c17af10-fc7c-4768-ab24-e6700f2dc588" ++ ] ++ } ++ }, ++ "ansible_devices": { ++ "sr0": { ++ "holders": [], ++ "host": "IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]", ++ "links": { ++ "ids": [ ++ "ata-QEMU_DVD-ROM_QM00004", ++ "scsi-0QEMU_QEMU_DVD-ROM_QM00004", ++ "scsi-1ATA_QEMU_DVD-ROM_QM00004" ++ ], ++ "labels": [ ++ "cidata" ++ ], ++ "masters": [], ++ "uuids": [ ++ "2021-09-21-09-21-51-42" ++ ] ++ }, ++ "model": "QEMU DVD-ROM", ++ "partitions": {}, ++ "removable": "1", ++ "rotational": "1", ++ "sas_address": null, ++ "sas_device_handle": null, ++ "scheduler_mode": "bfq", ++ "sectors": "732", ++ "sectorsize": "2048", ++ "size": "366.00 KB", ++ "support_discard": "0", ++ "vendor": "QEMU", ++ "virtual": 1 ++ }, ++ "vda": { ++ "holders": [], ++ "host": "SCSI storage controller: Red Hat, Inc. Virtio block device", ++ "links": { ++ "ids": [], ++ "labels": [], ++ "masters": [], ++ "uuids": [] ++ }, ++ "model": null, ++ "partitions": { ++ "vda1": { ++ "holders": [], ++ "links": { ++ "ids": [], ++ "labels": [], ++ "masters": [], ++ "uuids": [] ++ }, ++ "sectors": "4096", ++ "sectorsize": 512, ++ "size": "2.00 MB", ++ "start": "2048", ++ "uuid": null ++ }, ++ "vda2": { ++ "holders": [], ++ "links": { ++ "ids": [], ++ "labels": [ ++ "EFI" ++ ], ++ "masters": [], ++ "uuids": [ ++ "DB16-E900" ++ ] ++ }, ++ "sectors": "67584", ++ "sectorsize": 512, ++ "size": "33.00 MB", ++ "start": "6144", ++ "uuid": "DB16-E900" ++ }, ++ "vda3": { ++ "holders": [], ++ "links": { ++ "ids": [], ++ "labels": [ ++ "ROOT" ++ ], ++ "masters": [], ++ "uuids": [ ++ "2c17af10-fc7c-4768-ab24-e6700f2dc588" ++ ] ++ }, ++ "sectors": "419356639", ++ "sectorsize": 512, ++ "size": "199.96 GB", ++ "start": "73728", ++ "uuid": "2c17af10-fc7c-4768-ab24-e6700f2dc588" ++ } ++ }, ++ "removable": "0", ++ "rotational": "1", ++ "sas_address": null, ++ "sas_device_handle": null, ++ "scheduler_mode": "bfq", ++ "sectors": "419430400", ++ "sectorsize": "512", ++ "size": "200.00 GB", ++ "support_discard": "512", ++ "vendor": "0x1af4", ++ "virtual": 1 ++ } ++ }, ++ "ansible_distribution": "SLES", ++ "ansible_distribution_file_parsed": true, ++ "ansible_distribution_file_path": "/etc/os-release", ++ "ansible_distribution_file_variety": "SUSE", ++ "ansible_distribution_major_version": "15", ++ "ansible_distribution_release": "3", ++ "ansible_distribution_version": "15.3", ++ "ansible_dns": { ++ "nameservers": [ ++ "192.168.122.1" ++ ] ++ }, ++ "ansible_domain": "tf.local", ++ "ansible_effective_group_id": 0, ++ "ansible_effective_user_id": 0, ++ "ansible_env": { ++ "COLORTERM": "1", ++ "HOME": "/root", ++ "LANG": "es_ES.utf8", ++ "LC_ADDRESS": "C", ++ "LC_COLLATE": "C", ++ "LC_CTYPE": "C.UTF-8", ++ "LC_IDENTIFICATION": "C", ++ "LC_MEASUREMENT": "C", ++ "LC_MESSAGES": "C", ++ "LC_MONETARY": "C", ++ "LC_NAME": "C", ++ "LC_NUMERIC": "C", ++ "LC_PAPER": "C", ++ "LC_TELEPHONE": "C", ++ "LC_TIME": "C", ++ "LOGNAME": "root", ++ "MAIL": "/var/mail/root", ++ "PATH": "/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin:/usr/local/sbin", ++ "PWD": "/root", ++ "SHELL": "/bin/bash", ++ "SHLVL": "1", ++ "SUDO_COMMAND": "/bin/sh -c echo BECOME-SUCCESS-qedtxrnnbofvbuxhnhrhhiiglqankyuw ; /usr/bin/python3.6 /root/.ansible/tmp/ansible-tmp-1633080982.8063648-3385-23664123284127/AnsiballZ_setup.py", ++ "SUDO_GID": "0", ++ "SUDO_UID": "0", ++ "SUDO_USER": "root", ++ "TERM": "xterm-256color", ++ "USER": "root", ++ "_": "/usr/bin/python3.6" ++ }, ++ "ansible_eth0": { ++ "active": true, ++ "device": "eth0", ++ "features": { ++ "esp_hw_offload": "off [fixed]", ++ "esp_tx_csum_hw_offload": "off [fixed]", ++ "fcoe_mtu": "off [fixed]", ++ "generic_receive_offload": "on", ++ "generic_segmentation_offload": "on", ++ "highdma": "on [fixed]", ++ "hw_tc_offload": "off [fixed]", ++ "l2_fwd_offload": "off [fixed]", ++ "large_receive_offload": "on", ++ "loopback": "off [fixed]", ++ "macsec_hw_offload": "off [fixed]", ++ "netns_local": "off [fixed]", ++ "ntuple_filters": "off [fixed]", ++ "receive_hashing": "off [fixed]", ++ "rx_all": "off [fixed]", ++ "rx_checksumming": "on [fixed]", ++ "rx_fcs": "off [fixed]", ++ "rx_gro_hw": "off [fixed]", ++ "rx_gro_list": "off [fixed]", ++ "rx_udp_tunnel_port_offload": "off [fixed]", ++ "rx_vlan_filter": "on [fixed]", ++ "rx_vlan_offload": "off [fixed]", ++ "rx_vlan_stag_filter": "off [fixed]", ++ "rx_vlan_stag_hw_parse": "off [fixed]", ++ "scatter_gather": "on", ++ "tcp_segmentation_offload": "on", ++ "tls_hw_record": "off [fixed]", ++ "tls_hw_rx_offload": "off [fixed]", ++ "tls_hw_tx_offload": "off [fixed]", ++ "tx_checksum_fcoe_crc": "off [fixed]", ++ "tx_checksum_ip_generic": "on", ++ "tx_checksum_ipv4": "off [fixed]", ++ "tx_checksum_ipv6": "off [fixed]", ++ "tx_checksum_sctp": "off [fixed]", ++ "tx_checksumming": "on", ++ "tx_esp_segmentation": "off [fixed]", ++ "tx_fcoe_segmentation": "off [fixed]", ++ "tx_gre_csum_segmentation": "off [fixed]", ++ "tx_gre_segmentation": "off [fixed]", ++ "tx_gso_list": "off [fixed]", ++ "tx_gso_partial": "off [fixed]", ++ "tx_gso_robust": "on [fixed]", ++ "tx_ipxip4_segmentation": "off [fixed]", ++ "tx_ipxip6_segmentation": "off [fixed]", ++ "tx_lockless": "off [fixed]", ++ "tx_nocache_copy": "off", ++ "tx_scatter_gather": "on", ++ "tx_scatter_gather_fraglist": "off [fixed]", ++ "tx_sctp_segmentation": "off [fixed]", ++ "tx_tcp6_segmentation": "on", ++ "tx_tcp_ecn_segmentation": "on", ++ "tx_tcp_mangleid_segmentation": "off", ++ "tx_tcp_segmentation": "on", ++ "tx_tunnel_remcsum_segmentation": "off [fixed]", ++ "tx_udp_segmentation": "off [fixed]", ++ "tx_udp_tnl_csum_segmentation": "off [fixed]", ++ "tx_udp_tnl_segmentation": "off [fixed]", ++ "tx_vlan_offload": "off [fixed]", ++ "tx_vlan_stag_hw_insert": "off [fixed]", ++ "vlan_challenged": "off [fixed]" ++ }, ++ "hw_timestamp_filters": [], ++ "ipv4": { ++ "address": "192.168.122.210", ++ "broadcast": "192.168.122.255", ++ "netmask": "255.255.255.0", ++ "network": "192.168.122.0" ++ }, ++ "ipv6": [ ++ { ++ "address": "fe80::5054:ff:fed6:b9c8", ++ "prefix": "64", ++ "scope": "link" ++ } ++ ], ++ "macaddress": "52:54:00:d6:b9:c8", ++ "module": "virtio_net", ++ "mtu": 1500, ++ "pciid": "virtio0", ++ "promisc": false, ++ "speed": -1, ++ "timestamping": [], ++ "type": "ether" ++ }, ++ "ansible_fibre_channel_wwn": [], ++ "ansible_fips": false, ++ "ansible_form_factor": "Other", ++ "ansible_fqdn": "uyuni-stable-min-sles15sp3.tf.local", ++ "ansible_hostname": "uyuni-stable-min-sles15sp3", ++ "ansible_hostnqn": "", ++ "ansible_interfaces": [ ++ "eth0", ++ "lo" ++ ], ++ "ansible_is_chroot": false, ++ "ansible_iscsi_iqn": "iqn.1996-04.de.suse:01:e4116885f7c", ++ "ansible_kernel": "5.3.18-59.24-default", ++ "ansible_kernel_version": "#1 SMP Mon Sep 13 15:06:42 UTC 2021 (2f872ea)", ++ "ansible_lo": { ++ "active": true, ++ "device": "lo", ++ "features": { ++ "esp_hw_offload": "off [fixed]", ++ "esp_tx_csum_hw_offload": "off [fixed]", ++ "fcoe_mtu": "off [fixed]", ++ "generic_receive_offload": "on", ++ "generic_segmentation_offload": "on", ++ "highdma": "on [fixed]", ++ "hw_tc_offload": "off [fixed]", ++ "l2_fwd_offload": "off [fixed]", ++ "large_receive_offload": "off [fixed]", ++ "loopback": "on [fixed]", ++ "macsec_hw_offload": "off [fixed]", ++ "netns_local": "on [fixed]", ++ "ntuple_filters": "off [fixed]", ++ "receive_hashing": "off [fixed]", ++ "rx_all": "off [fixed]", ++ "rx_checksumming": "on [fixed]", ++ "rx_fcs": "off [fixed]", ++ "rx_gro_hw": "off [fixed]", ++ "rx_gro_list": "off [fixed]", ++ "rx_udp_tunnel_port_offload": "off [fixed]", ++ "rx_vlan_filter": "off [fixed]", ++ "rx_vlan_offload": "off [fixed]", ++ "rx_vlan_stag_filter": "off [fixed]", ++ "rx_vlan_stag_hw_parse": "off [fixed]", ++ "scatter_gather": "on", ++ "tcp_segmentation_offload": "on", ++ "tls_hw_record": "off [fixed]", ++ "tls_hw_rx_offload": "off [fixed]", ++ "tls_hw_tx_offload": "off [fixed]", ++ "tx_checksum_fcoe_crc": "off [fixed]", ++ "tx_checksum_ip_generic": "on [fixed]", ++ "tx_checksum_ipv4": "off [fixed]", ++ "tx_checksum_ipv6": "off [fixed]", ++ "tx_checksum_sctp": "on [fixed]", ++ "tx_checksumming": "on", ++ "tx_esp_segmentation": "off [fixed]", ++ "tx_fcoe_segmentation": "off [fixed]", ++ "tx_gre_csum_segmentation": "off [fixed]", ++ "tx_gre_segmentation": "off [fixed]", ++ "tx_gso_list": "off [fixed]", ++ "tx_gso_partial": "off [fixed]", ++ "tx_gso_robust": "off [fixed]", ++ "tx_ipxip4_segmentation": "off [fixed]", ++ "tx_ipxip6_segmentation": "off [fixed]", ++ "tx_lockless": "on [fixed]", ++ "tx_nocache_copy": "off [fixed]", ++ "tx_scatter_gather": "on [fixed]", ++ "tx_scatter_gather_fraglist": "on [fixed]", ++ "tx_sctp_segmentation": "on", ++ "tx_tcp6_segmentation": "on", ++ "tx_tcp_ecn_segmentation": "on", ++ "tx_tcp_mangleid_segmentation": "on", ++ "tx_tcp_segmentation": "on", ++ "tx_tunnel_remcsum_segmentation": "off [fixed]", ++ "tx_udp_segmentation": "off [fixed]", ++ "tx_udp_tnl_csum_segmentation": "off [fixed]", ++ "tx_udp_tnl_segmentation": "off [fixed]", ++ "tx_vlan_offload": "off [fixed]", ++ "tx_vlan_stag_hw_insert": "off [fixed]", ++ "vlan_challenged": "on [fixed]" ++ }, ++ "hw_timestamp_filters": [], ++ "ipv4": { ++ "address": "127.0.0.1", ++ "broadcast": "", ++ "netmask": "255.0.0.0", ++ "network": "127.0.0.0" ++ }, ++ "ipv6": [ ++ { ++ "address": "::1", ++ "prefix": "128", ++ "scope": "host" ++ } ++ ], ++ "mtu": 65536, ++ "promisc": false, ++ "timestamping": [], ++ "type": "loopback" ++ }, ++ "ansible_local": {}, ++ "ansible_lsb": {}, ++ "ansible_lvm": { ++ "lvs": {}, ++ "pvs": {}, ++ "vgs": {} ++ }, ++ "ansible_machine": "x86_64", ++ "ansible_machine_id": "4ea4c287c4d5498878452138614996c4", ++ "ansible_memfree_mb": 3351, ++ "ansible_memory_mb": { ++ "nocache": { ++ "free": 3540, ++ "used": 386 ++ }, ++ "real": { ++ "free": 3351, ++ "total": 3926, ++ "used": 575 ++ }, ++ "swap": { ++ "cached": 0, ++ "free": 0, ++ "total": 0, ++ "used": 0 ++ } ++ }, ++ "ansible_memtotal_mb": 3926, ++ "ansible_mounts": [ ++ { ++ "block_available": 50812991, ++ "block_size": 4096, ++ "block_total": 52418724, ++ "block_used": 1605733, ++ "device": "/dev/vda3", ++ "fstype": "xfs", ++ "inode_available": 104636905, ++ "inode_total": 104839104, ++ "inode_used": 202199, ++ "mount": "/", ++ "options": "rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota", ++ "size_available": 208130011136, ++ "size_total": 214707093504, ++ "uuid": "2c17af10-fc7c-4768-ab24-e6700f2dc588" ++ }, ++ { ++ "block_available": 14997, ++ "block_size": 2048, ++ "block_total": 16853, ++ "block_used": 1856, ++ "device": "/dev/vda2", ++ "fstype": "vfat", ++ "inode_available": 0, ++ "inode_total": 0, ++ "inode_used": 0, ++ "mount": "/boot/efi", ++ "options": "rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro", ++ "size_available": 30713856, ++ "size_total": 34514944, ++ "uuid": "DB16-E900" ++ } ++ ], ++ "ansible_nodename": "uyuni-stable-min-sles15sp3", ++ "ansible_os_family": "Suse", ++ "ansible_pkg_mgr": "zypper", ++ "ansible_proc_cmdline": { ++ "BOOT_IMAGE": "/boot/vmlinuz-5.3.18-59.24-default", ++ "console": [ ++ "ttyS0,115200", ++ "tty0" ++ ], ++ "net.ifnames": "0", ++ "plymouth.enable": "0", ++ "quiet": true, ++ "root": "UUID=2c17af10-fc7c-4768-ab24-e6700f2dc588" ++ }, ++ "ansible_processor": [ ++ "0", ++ "GenuineIntel", ++ "QEMU Virtual CPU version 2.5+" ++ ], ++ "ansible_processor_cores": 1, ++ "ansible_processor_count": 1, ++ "ansible_processor_threads_per_core": 1, ++ "ansible_processor_vcpus": 1, ++ "ansible_product_name": "Standard PC (i440FX + PIIX, 1996)", ++ "ansible_product_serial": "NA", ++ "ansible_product_uuid": "10721e79-de64-4ad6-8cca-63f00905e33a", ++ "ansible_product_version": "pc-i440fx-6.1", ++ "ansible_python": { ++ "executable": "/usr/bin/python3.6", ++ "has_sslcontext": true, ++ "type": "cpython", ++ "version": { ++ "major": 3, ++ "micro": 13, ++ "minor": 6, ++ "releaselevel": "final", ++ "serial": 0 ++ }, ++ "version_info": [ ++ 3, ++ 6, ++ 13, ++ "final", ++ 0 ++ ] ++ }, ++ "ansible_python_version": "3.6.13", ++ "ansible_real_group_id": 0, ++ "ansible_real_user_id": 0, ++ "ansible_selinux": { ++ "status": "disabled" ++ }, ++ "ansible_selinux_python_present": true, ++ "ansible_service_mgr": "systemd", ++ "ansible_ssh_host_key_dsa_public": "AAAAB3NzaC1kc3MAAACBAIDAuJ+oAZ+pvXNJaagO0odTNCZFCd13m6fM8AI/TaOV60jaANBh9Vn92Oj2MwG1lKuOXCNy7auMEMflt581H3eTL75gMjvwJzu+DULxM/unvI+6Pcqx4BH1LWFo6AtQn/orh3iaSy1e2i7ql6JJ+RIe2K467x0IFHEccW9AWye3AAAAFQDB0qTYcD2yjAo0d3jl1EQBTjo36QAAAIBxINNBX41qeQxKiZSID3gSeMJ1qLANJOy6P7mOzM5JkwUyjTmJXDMnU5uOflt9BZILypsqfF41VyXkCFVIwpChhJEStjkdsr4oU1NfYO/PTZDyiGKb/1uam6vUDkejjMH0k4IALsuOf6SUQ+nDJEauqKr0IcFKojK58ozL/V3ulwAAAIAY74j1hPcE7Xu2XANiaE4+426UkMmOl3EWZJK6rDARLhTS4PHcYWcHEBqvsMDGYCzI/QijXC/0tCfnbkVgWcwEFEBdaBNAy2fNfBzmmgkUpuYdwwjXI41Gq80aWiC1zZ8E8VjIjTVHqBoPyIeF6gg2/jKy8adFmK+sD7OvW+EDaQ==", ++ "ansible_ssh_host_key_ecdsa_public": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGmKiPoVBzZKB8NLyIfucHWV6iczW1/Rc+80SCqg3kUpPGpvI6YFJAjdAeNwzR9Y561guqtuk6MUCQ5FmsvYorc=", ++ "ansible_ssh_host_key_ed25519_public": "AAAAC3NzaC1lZDI1NTE5AAAAIPjJby3xFaEPRohlxkZ++xmB25m9DRZ7Unl3kVMemmzc", ++ "ansible_ssh_host_key_rsa_public": "AAAAB3NzaC1yc2EAAAADAQABAAABgQCpwVJh+FiVo5RbOWc9dYGVXL/wqiCjq2xqgFpERv7239qTFPZod3w2F37PY+FBK7m0+7PCRWCcnqw94GBICMb+QVJDspvBTN78kzvwSzvRg2K0CX0Qqj+9rpwh0FuD8E57i6R3l+AhAdQEBnUXUU4bj5ZzlHyoRXBxswyq7ret6Q8us6RGX+dlrQ9W+DaXC6r3lptQeOFlNyATyaFEI5wPWQU86hkoia2sCPxN5T/y+HcJDz4S45nEIm0IVpR2ZH0/mdqaOqF2tg7BuUHfhMRBefgQDp6vur1NORVxUYavHP3P0Bw//JNlzuRqb/NV5feM52WTqPujftS+25kTCGUm7X5jZV/PSfqrv5THnXVWy8pO/YAUnyc5ad08Gh0R/LvNPKxmbjYvSDcZ23uCa31nZ7oTwF1nlfGuGLJR5+PhEurtJrrgLL4m9rttHuf++AM8lOZncvwz6BD4e/YmorGcaCk4p7C6Ink6EBrYS36ekXcVkHDE0k5k09xSXHKBR4U=", ++ "ansible_swapfree_mb": 0, ++ "ansible_swaptotal_mb": 0, ++ "ansible_system": "Linux", ++ "ansible_system_vendor": "QEMU", ++ "ansible_uptime_seconds": 277, ++ "ansible_user_dir": "/root", ++ "ansible_user_gecos": "root", ++ "ansible_user_gid": 0, ++ "ansible_user_id": "root", ++ "ansible_user_shell": "/bin/bash", ++ "ansible_user_uid": 0, ++ "ansible_userspace_architecture": "x86_64", ++ "ansible_userspace_bits": "64", ++ "ansible_virtualization_role": "guest", ++ "ansible_virtualization_type": "kvm", ++ "discovered_interpreter_python": "/usr/bin/python3.6", ++ "gather_subset": [ ++ "all" ++ ], ++ "module_setup": true ++ }, ++ "changed": false, ++ "deprecations": [], ++ "warnings": [ ++ "Platform linux on host uyuni-stable-min-sles15sp3.tf.local is using the discovered Python interpreter at /usr/bin/python3.6, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information." ++ ] ++ } ++ }, ++ "task": { ++ "duration": { ++ "end": "2021-10-01T09:36:25.300423Z", ++ "start": "2021-10-01T09:36:22.632928Z" ++ }, ++ "id": "525400d6-b9c8-afcf-67b6-00000000000f", ++ "name": "Gathering Facts" ++ } ++ }, ++ { ++ "hosts": { ++ "uyuni-stable-min-centos7.tf.local": { ++ "_ansible_no_log": false, ++ "action": "yum", ++ "changed": false, ++ "changes": { ++ "installed": [], ++ "updated": [] ++ }, ++ "invocation": { ++ "module_args": { ++ "allow_downgrade": false, ++ "autoremove": false, ++ "bugfix": false, ++ "conf_file": null, ++ "disable_excludes": null, ++ "disable_gpg_check": false, ++ "disable_plugin": [], ++ "disablerepo": [], ++ "download_dir": null, ++ "download_only": false, ++ "enable_plugin": [], ++ "enablerepo": [], ++ "exclude": [], ++ "install_repoquery": true, ++ "install_weak_deps": true, ++ "installroot": "/", ++ "list": null, ++ "lock_timeout": 30, ++ "name": [ ++ "git" ++ ], ++ "releasever": null, ++ "security": false, ++ "skip_broken": false, ++ "state": "latest", ++ "update_cache": false, ++ "update_only": false, ++ "use_backend": "auto", ++ "validate_certs": true ++ } ++ }, ++ "msg": "", ++ "rc": 0, ++ "results": [ ++ "All packages providing git are up to date", ++ "" ++ ] ++ }, ++ "uyuni-stable-min-sles15sp3.tf.local": { ++ "_ansible_no_log": false, ++ "action": "yum", ++ "changed": false, ++ "skip_reason": "Conditional result was False", ++ "skipped": true ++ } ++ }, ++ "task": { ++ "duration": { ++ "end": "2021-10-01T09:36:28.556648Z", ++ "start": "2021-10-01T09:36:25.321171Z" ++ }, ++ "id": "525400d6-b9c8-afcf-67b6-000000000009", ++ "name": "install git CentOS" ++ } ++ }, ++ { ++ "hosts": { ++ "uyuni-stable-min-centos7.tf.local": { ++ "_ansible_no_log": false, ++ "action": "zypper", ++ "changed": false, ++ "skip_reason": "Conditional result was False", ++ "skipped": true ++ }, ++ "uyuni-stable-min-sles15sp3.tf.local": { ++ "_ansible_no_log": false, ++ "action": "zypper", ++ "changed": false, ++ "cmd": [ ++ "/usr/bin/zypper", ++ "--quiet", ++ "--non-interactive", ++ "--xmlout", ++ "install", ++ "--type", ++ "package", ++ "--auto-agree-with-licenses", ++ "--no-recommends", ++ "--", ++ "+git-core" ++ ], ++ "invocation": { ++ "module_args": { ++ "disable_gpg_check": false, ++ "disable_recommends": true, ++ "extra_args": null, ++ "extra_args_precommand": null, ++ "force": false, ++ "name": [ ++ "git-core" ++ ], ++ "oldpackage": false, ++ "state": "latest", ++ "type": "package", ++ "update_cache": false ++ } ++ }, ++ "name": [ ++ "git-core" ++ ], ++ "rc": 0, ++ "state": "latest", ++ "update_cache": false ++ } ++ }, ++ "task": { ++ "duration": { ++ "end": "2021-10-01T09:36:32.254044Z", ++ "start": "2021-10-01T09:36:28.572234Z" ++ }, ++ "id": "525400d6-b9c8-afcf-67b6-00000000000a", ++ "name": "install git SUSE" ++ } ++ }, ++ { ++ "hosts": { ++ "uyuni-stable-min-centos7.tf.local": { ++ "_ansible_no_log": false, ++ "action": "apt", ++ "changed": false, ++ "skip_reason": "Conditional result was False", ++ "skipped": true ++ }, ++ "uyuni-stable-min-sles15sp3.tf.local": { ++ "_ansible_no_log": false, ++ "action": "apt", ++ "changed": false, ++ "skip_reason": "Conditional result was False", ++ "skipped": true ++ } ++ }, ++ "task": { ++ "duration": { ++ "end": "2021-10-01T09:36:32.534379Z", ++ "start": "2021-10-01T09:36:32.273798Z" ++ }, ++ "id": "525400d6-b9c8-afcf-67b6-00000000000b", ++ "name": "install git Ubuntu" ++ } ++ } ++ ] ++ } ++ ], ++ "stats": { ++ "uyuni-stable-min-centos7.tf.local": { ++ "changed": 0, ++ "failures": 0, ++ "ignored": 0, ++ "ok": 2, ++ "rescued": 0, ++ "skipped": 2, ++ "unreachable": 0 ++ }, ++ "uyuni-stable-min-sles15sp3.tf.local": { ++ "changed": 0, ++ "failures": 0, ++ "ignored": 0, ++ "ok": 2, ++ "rescued": 0, ++ "skipped": 2, ++ "unreachable": 0 ++ } ++ }, ++ "retcode": 0 ++} +diff --git a/tests/unit/states/test_ansiblegate.py b/tests/unit/states/test_ansiblegate.py +index ac677fc5db..6bf4494326 100644 +--- a/tests/unit/states/test_ansiblegate.py ++++ b/tests/unit/states/test_ansiblegate.py +@@ -12,7 +12,6 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-# Import Salt Testing Libs + + import json + import os +@@ -73,6 +72,38 @@ class AnsiblegateTestCase(TestCase, LoaderModuleMockMixin): + }, + ) + ++ @patch("salt.utils.path.which", MagicMock(return_value=True)) ++ def test_ansible_playbooks_states_success_with_skipped(self): ++ """ ++ Test ansible.playbooks states executions success. ++ """ ++ ++ with salt.utils.files.fopen( ++ os.path.join(self.playbooks_examples_dir, "success_example_with_skipped.json") ++ ) as f: ++ success_output = json.loads(f.read()) ++ ++ with patch.dict( ++ ansible.__salt__, ++ {"ansible.playbooks": MagicMock(return_value=success_output)}, ++ ), patch("salt.utils.path.which", return_value=True), patch.dict( ++ ansible.__opts__, {"test": False} ++ ): ++ ret = ansible.playbooks("foobar") ++ assert ret["result"] is True ++ assert ret["comment"] == "No changes to be made from playbook foobar" ++ assert ret["changes"] == { ++ "all": { ++ "install git CentOS": {"uyuni-stable-min-sles15sp3.tf.local": {}}, ++ "install git SUSE": {"uyuni-stable-min-centos7.tf.local": {}}, ++ "install git Ubuntu": { ++ "uyuni-stable-min-centos7.tf.local": {}, ++ "uyuni-stable-min-sles15sp3.tf.local": {}, ++ }, ++ } ++ } ++ ++ @patch("salt.utils.path.which", MagicMock(return_value=True)) + def test_ansible_playbooks_states_failed(self): + """ + Test ansible.playbooks failed states executions. +-- +2.33.0 + + diff --git a/_lastrevision b/_lastrevision index d814cf6..19dd0ae 100644 --- a/_lastrevision +++ b/_lastrevision @@ -1 +1 @@ -0f00e37ce7f38b6d92b7a2b04cb2faa03098b0fc \ No newline at end of file +43d1aa8a46def69d5b6097d235e7c7a97d4635cf \ No newline at end of file diff --git a/fix-crash-when-calling-manage.not_alive-runners.patch b/fix-crash-when-calling-manage.not_alive-runners.patch new file mode 100644 index 0000000..f046128 --- /dev/null +++ b/fix-crash-when-calling-manage.not_alive-runners.patch @@ -0,0 +1,81 @@ +From 3ecb98a9bd7a8d35cff6d0a5f34b7fea96f89da7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Pablo=20Su=C3=A1rez=20Hern=C3=A1ndez?= + +Date: Fri, 8 Oct 2021 12:47:53 +0100 +Subject: [PATCH] Fix crash when calling manage.not_alive runners + +Fix unit tests for netlink_tool_remote_on + +Drop wrong test +--- + salt/utils/network.py | 1 + + tests/unit/utils/test_network.py | 17 ++++------------- + 2 files changed, 5 insertions(+), 13 deletions(-) + +diff --git a/salt/utils/network.py b/salt/utils/network.py +index 0dd20c5599..f0f5f1e8ce 100644 +--- a/salt/utils/network.py ++++ b/salt/utils/network.py +@@ -1701,6 +1701,7 @@ def _netlink_tool_remote_on(port, which_end): + elif "ESTAB" not in line: + continue + chunks = line.split() ++ local_host, local_port = chunks[3].rsplit(":", 1) + remote_host, remote_port = chunks[4].rsplit(":", 1) + + if which_end == "remote_port" and int(remote_port) != int(port): +diff --git a/tests/unit/utils/test_network.py b/tests/unit/utils/test_network.py +index 637d5e9811..3060aba0aa 100644 +--- a/tests/unit/utils/test_network.py ++++ b/tests/unit/utils/test_network.py +@@ -110,18 +110,14 @@ USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS + salt-master python2.781106 35 tcp4 127.0.0.1:61115 127.0.0.1:4506 + """ + +-NETLINK_SS = """ +-State Recv-Q Send-Q Local Address:Port Peer Address:Port +-ESTAB 0 0 127.0.0.1:56726 127.0.0.1:4505 +-ESTAB 0 0 ::ffff:1.2.3.4:5678 ::ffff:1.2.3.4:4505 +-""" +- + LINUX_NETLINK_SS_OUTPUT = """\ + State Recv-Q Send-Q Local Address:Port Peer Address:Port + TIME-WAIT 0 0 [::1]:8009 [::1]:40368 + LISTEN 0 128 127.0.0.1:5903 0.0.0.0:* + ESTAB 0 0 [::ffff:127.0.0.1]:4506 [::ffff:127.0.0.1]:32315 + ESTAB 0 0 192.168.122.1:4506 192.168.122.177:24545 ++ESTAB 0 0 127.0.0.1:56726 127.0.0.1:4505 ++ESTAB 0 0 ::ffff:1.2.3.4:5678 ::ffff:1.2.3.4:4505 + """ + + IPV4_SUBNETS = { +@@ -633,11 +629,11 @@ class NetworkTestCase(TestCase): + with patch( + "subprocess.check_output", return_value=LINUX_NETLINK_SS_OUTPUT + ): +- remotes = network._netlink_tool_remote_on("4506", "local") ++ remotes = network._netlink_tool_remote_on("4506", "local_port") + self.assertEqual(remotes, {"192.168.122.177", "::ffff:127.0.0.1"}) + + def test_netlink_tool_remote_on_b(self): +- with patch("subprocess.check_output", return_value=NETLINK_SS): ++ with patch("subprocess.check_output", return_value=LINUX_NETLINK_SS_OUTPUT): + remotes = network._netlink_tool_remote_on("4505", "remote_port") + self.assertEqual(remotes, {"127.0.0.1", "::ffff:1.2.3.4"}) + +@@ -1274,11 +1270,6 @@ class NetworkTestCase(TestCase): + ): + self.assertEqual(network.get_fqhostname(), host) + +- def test_netlink_tool_remote_on(self): +- with patch("subprocess.check_output", return_value=NETLINK_SS): +- remotes = network._netlink_tool_remote_on("4505", "remote") +- self.assertEqual(remotes, {"127.0.0.1", "::ffff:1.2.3.4"}) +- + def test_is_fqdn(self): + """ + Test is_fqdn function passes possible FQDN names. +-- +2.33.0 + + diff --git a/fix-issues-with-salt-ssh-s-extra-filerefs.patch b/fix-issues-with-salt-ssh-s-extra-filerefs.patch new file mode 100644 index 0000000..5f476a7 --- /dev/null +++ b/fix-issues-with-salt-ssh-s-extra-filerefs.patch @@ -0,0 +1,139 @@ +From ef433d6f02af87d45363ae07fe438a1d7747df13 Mon Sep 17 00:00:00 2001 +From: "Daniel A. Wozniak" +Date: Thu, 7 Oct 2021 17:22:37 -0700 +Subject: [PATCH] Fix issues with salt-ssh's extra-filerefs + +Verify salt-ssh can import from map files in states + +Add changelog for 60003.fixed +--- + changelog/60003.fixed | 1 + + salt/client/ssh/__init__.py | 1 + + tests/pytests/integration/ssh/test_state.py | 94 +++++++++++++++++++++ + 3 files changed, 96 insertions(+) + create mode 100644 changelog/60003.fixed + create mode 100644 tests/pytests/integration/ssh/test_state.py + +diff --git a/changelog/60003.fixed b/changelog/60003.fixed +new file mode 100644 +index 0000000000..6fafbf5108 +--- /dev/null ++++ b/changelog/60003.fixed +@@ -0,0 +1 @@ ++Validate we can import map files in states +diff --git a/salt/client/ssh/__init__.py b/salt/client/ssh/__init__.py +index 409d6e740e..76c57996d9 100644 +--- a/salt/client/ssh/__init__.py ++++ b/salt/client/ssh/__init__.py +@@ -1161,6 +1161,7 @@ class Single: + opts_pkg["_ssh_version"] = self.opts["_ssh_version"] + opts_pkg["thin_dir"] = self.opts["thin_dir"] + opts_pkg["master_tops"] = self.opts["master_tops"] ++ opts_pkg["extra_filerefs"] = self.opts.get("extra_filerefs", "") + opts_pkg["__master_opts__"] = self.context["master_opts"] + if "known_hosts_file" in self.opts: + opts_pkg["known_hosts_file"] = self.opts["known_hosts_file"] +diff --git a/tests/pytests/integration/ssh/test_state.py b/tests/pytests/integration/ssh/test_state.py +new file mode 100644 +index 0000000000..58330a5dd8 +--- /dev/null ++++ b/tests/pytests/integration/ssh/test_state.py +@@ -0,0 +1,94 @@ ++import pytest ++ ++pytestmark = [ ++ pytest.mark.skip_on_windows(reason="salt-ssh not available on Windows"), ++] ++ ++ ++@pytest.fixture(scope="module") ++def state_tree(base_env_state_tree_root_dir): ++ top_file = """ ++ base: ++ 'localhost': ++ - basic ++ '127.0.0.1': ++ - basic ++ """ ++ map_file = """ ++ {%- set abc = "def" %} ++ """ ++ state_file = """ ++ {%- from "map.jinja" import abc with context %} ++ ++ Ok with {{ abc }}: ++ test.succeed_without_changes ++ """ ++ top_tempfile = pytest.helpers.temp_file( ++ "top.sls", top_file, base_env_state_tree_root_dir ++ ) ++ map_tempfile = pytest.helpers.temp_file( ++ "map.jinja", map_file, base_env_state_tree_root_dir ++ ) ++ state_tempfile = pytest.helpers.temp_file( ++ "test.sls", state_file, base_env_state_tree_root_dir ++ ) ++ ++ with top_tempfile, map_tempfile, state_tempfile: ++ yield ++ ++ ++@pytest.mark.slow_test ++def test_state_with_import(salt_ssh_cli, state_tree): ++ """ ++ verify salt-ssh can use imported map files in states ++ """ ++ ret = salt_ssh_cli.run("state.sls", "test") ++ assert ret.exitcode == 0 ++ assert ret.json ++ ++ ++@pytest.fixture ++def nested_state_tree(base_env_state_tree_root_dir, tmpdir): ++ top_file = """ ++ base: ++ 'localhost': ++ - basic ++ '127.0.0.1': ++ - basic ++ """ ++ state_file = """ ++ /{}/file.txt: ++ file.managed: ++ - source: salt://foo/file.jinja ++ - template: jinja ++ """.format( ++ tmpdir ++ ) ++ file_jinja = """ ++ {% from 'foo/map.jinja' import comment %}{{ comment }} ++ """ ++ map_file = """ ++ {% set comment = "blah blah" %} ++ """ ++ statedir = base_env_state_tree_root_dir / "foo" ++ top_tempfile = pytest.helpers.temp_file( ++ "top.sls", top_file, base_env_state_tree_root_dir ++ ) ++ map_tempfile = pytest.helpers.temp_file("map.jinja", map_file, statedir) ++ file_tempfile = pytest.helpers.temp_file("file.jinja", file_jinja, statedir) ++ state_tempfile = pytest.helpers.temp_file("init.sls", state_file, statedir) ++ ++ with top_tempfile, map_tempfile, state_tempfile, file_tempfile: ++ yield ++ ++ ++@pytest.mark.slow_test ++def test_state_with_import_from_dir(salt_ssh_cli, nested_state_tree): ++ """ ++ verify salt-ssh can use imported map files in states ++ """ ++ ret = salt_ssh_cli.run( ++ "--extra-filerefs=salt://foo/map.jinja", "state.apply", "foo" ++ ) ++ assert ret.exitcode == 0 ++ assert ret.json +-- +2.33.0 + + diff --git a/salt.changes b/salt.changes index 02756dc..b3f68cc 100644 --- a/salt.changes +++ b/salt.changes @@ -1,3 +1,27 @@ +------------------------------------------------------------------- +Fri Oct 8 15:48:09 UTC 2021 - Pablo Suárez Hernández + +- Fix issues with salt-ssh's extra-filerefs + +- Added: + * fix-issues-with-salt-ssh-s-extra-filerefs.patch + +------------------------------------------------------------------- +Fri Oct 8 15:26:04 UTC 2021 - Pablo Suárez Hernández + +- Fix crash when calling manage.not_alive runners + +- Added: + * fix-crash-when-calling-manage.not_alive-runners.patch + +------------------------------------------------------------------- +Wed Oct 6 08:32:54 UTC 2021 - Pablo Suárez Hernández + +- Do not consider skipped targets as failed for ansible.playbooks state (bsc#1190446) + +- Added: + * 3003.3-do-not-consider-skipped-targets-as-failed-for.patch + ------------------------------------------------------------------- Thu Sep 30 10:49:56 UTC 2021 - Pablo Suárez Hernández diff --git a/salt.spec b/salt.spec index 2765405..9a330bc 100644 --- a/salt.spec +++ b/salt.spec @@ -170,6 +170,7 @@ Patch29: fix-wrong-test_mod_del_repo_multiline_values-test-af.patch # PATCH-FIX_OPENSUSE https://github.com/openSUSE/salt/commit/a18ac47b75550bd55f4ca91dc221ed408881984c Patch30: make-setup.py-script-to-not-require-setuptools-9.1.patch # PATCH-FIX_OPENSUSE https://github.com/openSUSE/salt/pull/228 (missing upstream PR) +# PATCH-FIX_UPSTREAM https://github.com/saltstack/salt/pull/61017 Patch31: adds-explicit-type-cast-for-port.patch # PATCH-FIX_UPSTREAM https://github.com/saltstack/salt/pull/57123 Patch32: prevent-logging-deadlock-on-salt-api-subprocesses-bs.patch @@ -286,6 +287,12 @@ Patch68: templates-move-the-globals-up-to-the-environment-jin.patch Patch69: 3003.3-postgresql-json-support-in-pillar-423.patch # PATCH-FIX_UPSTREAM https://github.com/saltstack/salt/pull/60980 Patch70: do-not-break-master_tops-for-minion-with-version-low.patch +# PATCH-FIX_UPSTREAM https://github.com/saltstack/salt/pull/60983 +Patch71: 3003.3-do-not-consider-skipped-targets-as-failed-for.patch +# PATCH-FIX_UPSTREAM https://github.com/saltstack/salt/pull/61017 +Patch72: fix-crash-when-calling-manage.not_alive-runners.patch +# PATCH-FIX_UPSTREAM https://github.com/saltstack/salt/pull/61014 +Patch73: fix-issues-with-salt-ssh-s-extra-filerefs.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -771,6 +778,9 @@ cp %{S:6} . %patch68 -p1 %patch69 -p1 %patch70 -p1 +%patch71 -p1 +%patch72 -p1 +%patch73 -p1 %build # Putting /usr/bin at the front of $PATH is needed for RHEL/RES 7. Without this