Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kanku for openSUSE:Factory checked 
in at 2022-10-14 15:41:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kanku (Old)
 and      /work/SRC/openSUSE:Factory/.kanku.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kanku"

Fri Oct 14 15:41:39 2022 rev:15 rq:1010421 version:0.13.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kanku/kanku.changes      2022-06-24 
08:45:57.659182892 +0200
+++ /work/SRC/openSUSE:Factory/.kanku.new.2275/kanku.changes    2022-10-14 
15:42:24.815905806 +0200
@@ -1,0 +2,28 @@
+Thu Oct 13 06:56:40 UTC 2022 - fschrei...@suse.com
+
+- Update to version 0.13.0:
+  * [doc] updated changelog ver: 0.13.0
+  * [doc] updated release notes 0.13.0
+  * [core] recreate queues named 'amq.*' without a dedicate queue name
+  * [core] refactored rabbmitmq handling in worker and dispatcher
+  * [handler] Reboot: new option 'login_timeout' to wait for console
+  * [dist] change copy in Makefile from '-av' to '-rv'
+  * [handler] SaltSSH: added multiple attributes
+  * [dist] changed 'cp -av' to 'cp -rv'
+  * [dist] added RELEASE-NOTES and CHANGELOG to spec file
+  * [doc] updated changelog
+  * [doc] updated release notes 0.12.7
+  * [doc] updated release notes 0.12.6
+  * [doc] updated release notes 0.12.5
+  * [doc] updated release notes 0.12.4
+  * [doc] updated release notes 0.12.3
+  * [doc] updated release notes 0.12.2
+  * [doc] updated release notes 0.12.1
+  * [doc] updated release notes 0.12.0
+  * [contrib] removed p2h - already in branch gh-pages-src
+  * [dist] added .statocles to .gitignore
+  * [dist] removed kanku-web.log from default logging conf
+  * [dist] remove logrotate config - now done with journald
+  * [cli] ssh: new parameter --x11_forward/-X to enable ssh x11 forwarding
+
+-------------------------------------------------------------------

Old:
----
  kanku-0.12.7.tar.xz

New:
----
  kanku-0.13.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kanku.spec ++++++
--- /var/tmp/diff_new_pack.nJrP5M/_old  2022-10-14 15:42:25.567907061 +0200
+++ /var/tmp/diff_new_pack.nJrP5M/_new  2022-10-14 15:42:25.571907068 +0200
@@ -22,7 +22,7 @@
 
 Name:           kanku
 # Version gets set by obs-service-tar_scm
-Version:        0.12.7
+Version:        0.13.0
 Release:        0
 License:        GPL-3.0-only
 Summary:        Development and continuous integration
@@ -173,7 +173,6 @@
 # but perl-DBD-SQLite-Amalgamation is breaks with SQL syntax errors
 # at job_histroy_sub table
 Requires:       perl-DBD-SQLite
-Requires:       logrotate
 Requires:       perl(Archive::Cpio)
 Requires:       perl(LWP::Protocol::https)
 Requires:       perl(Mail::Sendmail)
@@ -193,7 +192,7 @@
 %tmpfiles_create %_tmpfilesdir/kanku.conf
 
 %files common
-%doc README.md RELEASE-NOTES-0.11.0.md RELEASE-NOTES-0.12.0.md
+%doc README.md RELEASE-NOTES-*.md CHANGELOG.md
 
 %dir /usr/lib/kanku
 %dir /usr/lib/kanku/lib
@@ -245,9 +244,6 @@
 %exclude %dir /etc/profile.d
 %config /etc/profile.d/kanku.sh
 
-%exclude %dir /etc/logrotate.d/
-%config /etc/logrotate.d/kanku-common
-
 %exclude %dir %_tmpfilesdir
 %_tmpfilesdir/kanku.conf
 
@@ -347,7 +343,6 @@
 
 %files common-server
 %defattr(-, root, root)
-%dir %attr(755, kankurun, kanku) /var/log/kanku
 %dir %attr(755, kankurun, kanku) /var/lib/kanku
 %dir %attr(755, kankurun, kanku) /var/lib/kanku/db
 %dir %attr(755, kankurun, kanku) /var/cache/kanku


++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.nJrP5M/_old  2022-10-14 15:42:25.623907155 +0200
+++ /var/tmp/diff_new_pack.nJrP5M/_new  2022-10-14 15:42:25.627907161 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/M0ses/kanku.git</param>
-              <param 
name="changesrevision">fcf4fb2700c14072942d14ddb54c48fe0814a0b8</param></service></servicedata>
+              <param 
name="changesrevision">b078f23cfb1a421ab19c4573b94b1c20c174cfd1</param></service></servicedata>
 (No newline at EOF)
 

++++++ debian.changelog ++++++
--- /var/tmp/diff_new_pack.nJrP5M/_old  2022-10-14 15:42:25.647907195 +0200
+++ /var/tmp/diff_new_pack.nJrP5M/_new  2022-10-14 15:42:25.651907201 +0200
@@ -1,4 +1,4 @@
-kanku (0.12.7-0) UNRELEASED; urgency=medium
+kanku (0.13.0-0) UNRELEASED; urgency=medium
 
   * updated to upstream version 0.10.1
 

++++++ debian.dsc ++++++
--- /var/tmp/diff_new_pack.nJrP5M/_old  2022-10-14 15:42:25.695907275 +0200
+++ /var/tmp/diff_new_pack.nJrP5M/_new  2022-10-14 15:42:25.699907281 +0200
@@ -2,7 +2,7 @@
 Source: kanku
 Binary: kanku
 Architecture: any
-Version: 0.12.7
+Version: 0.13.0
 Maintainer: Frank Schreiner <fschrei...@suse.de>
 Standards-Version: 3.8.2
 Homepage: https://github.com/M0ses/kanku

++++++ kanku-0.12.7.tar.xz -> kanku-0.13.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/.gitignore new/kanku-0.13.0/.gitignore
--- old/kanku-0.12.7/.gitignore 2022-06-23 18:51:02.000000000 +0200
+++ new/kanku-0.13.0/.gitignore 2022-10-13 08:53:11.000000000 +0200
@@ -26,3 +26,4 @@
 .perlcritic.cache
 etc/rabbit.yml
 KankuFile.examples/rockrobo
+.statocles
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/CHANGELOG.md 
new/kanku-0.13.0/CHANGELOG.md
--- old/kanku-0.12.7/CHANGELOG.md       1970-01-01 01:00:00.000000000 +0100
+++ new/kanku-0.13.0/CHANGELOG.md       2022-10-13 08:53:11.000000000 +0200
@@ -0,0 +1,119 @@
+# [0.13.0] - 2022-10-10
+
+## FEATURES
+
+* [core] refactored rabbmitmq handling in worker and dispatcher
+* [handler] Reboot: new option 'login_timeout' to wait for console
+* [handler] SaltSSH: added multiple attributes
+* [dist] removed kanku-web.log from default logging conf
+* [dist] remove logrotate config - now done with journald
+* [cli] ssh: new parameter --x11_forward/-X to enable ssh x11 forwarding
+
+
+# [0.12.7] - 2022-06-23
+
+## BUGFIXES
+
+* [handler] K:H:GIT - fixed gituser/gitpass handling
+* [cli] up: fixed special job `__ALL__`
+
+
+# [0.12.6] - 2022-06-22
+
+## FEATURES
+
+* [cli] up: new special job `__ALL__` where a sequence of jobs can be defined 
in an array
+* [cli] up: multiple jobs can now be specified as options
+* [handler] new Kanku::Handler::CopyProfile
+
+
+# [0.12.5] - 2022-06-03
+
+## FEATURES
+
+* [cli] up: new alias for ```--skip_check_domain``` -> ```-S```
+* [cli] ssh: new option ```--agent_forward | -A```
+* [cli] up:  new option ```--skip_check_domain | -S```
+* [util] limit `use cache=unsafe` to vmdk images - speed improvement for other 
images
+* [dist] fixed order of iptables rules when using multiple networks (server 
mode)
+* [handler] SetupNetwork: changed get_ipaddress to console
+
+
+# [0.12.4] - 2022-05-06
+
+## BUGFIXES
+
+* [util] improve vmdk performance (`cache=unsafe` in libvirt disk driver)
+* [web] fixed 'To Top'-button
+
+
+# [0.12.3] - 2022-03-14
+
+## FEATURES
+
+* [cli] check_configs command now also check job_group configs
+
+
+## BUGFIXES
+
+* [web] fix outdated cached settings in 'Job Groups'
+* [core] #boo 1196604 - wrapper scripts for iptables/ss/netstat
+* [dist] change default logging to stderr/journald
+* [util] VM::Image - use new buffer size while uncompressing
+* [urlwrapper] fixed x-scheme-handler_kanku
+* [handler] central config for host_interfaces for PortForward
+* [web] job groups config changes are now detected in web ui
+
+
+# [0.12.2] - 2022-02-18
+
+## BUGFIXES
+
+* [web] guest page - filter iptable rules by domain name
+
+
+# [0.12.1] - 2022-02-16
+
+## FEATURES
+
+* [dist] new systemd service kanku-iptables for master server
+
+
+# [0.12.0] - 2022-02-09
+
+## FEATURES
+
+* [web]
+  * new switch autostart to create persistent VM's
+  * added login route (for GET method)
+* [cli]
+  * new command `kanku snapshot ...`
+  * new options for `kanku ssh ...`:
+    * `--ipaddress` to specify the ip address of the VM (alias `-i`)
+    * `--execute` to execute a single command via ssh (alias `-e`)
+  * use ssh_user from KankuFile for ssh command
+  * new option: `--log_file/--log_stdout` for VM related commands
+  * Suggest running ssh-add on auth fauilure when auth_type is 'agent'
+
+
+## BUGFIXES
+
+* [web]
+  * fix 'show only latest' in job history
+* [core]
+  * no_wait_for_bootloader for ExecuteCommandsViaConsole to avoid waiting for 
bootloader
+  * Fix ssh key filename: id_ecdsa.pub_sk -> id_ecdsa_sk.pub
+  * various cleanups to avoid 'uninitialized value'
+* [dist]
+  * fix tabs in default config template setup/kanku-config.yml.tt2
+  * K:H:PrepareSSH: fix permissions for user kanku
+  * K:H:CleanupIPTables: cleanup unused packages
+* [util]
+  * set default for running_remotely in VM to 0
+* [examples] updated configs
+  * updated to current opensuse
+  * deleted broken examples
+  * updated centos to latest version
+  * renamed centos -> centos-current
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/Makefile new/kanku-0.13.0/Makefile
--- old/kanku-0.12.7/Makefile   2022-06-23 18:51:02.000000000 +0200
+++ new/kanku-0.13.0/Makefile   2022-10-13 08:53:11.000000000 +0200
@@ -48,7 +48,6 @@
        install -m 644 etc/templates/default-vm.tt2.$(ARCH) 
$(DESTDIR)/etc/kanku/templates/default-vm.tt2
 
 install: install_dirs install_full_dirs install_services install_docs configs 
public views bashcomp urlwrapper install_arch_templates
-       install -m 644 ./dist/kanku.logrotate 
$(DESTDIR)/etc/logrotate.d/kanku-common
        install -m 644 dist/profile.d-kanku.sh $(DESTDIR)/etc/profile.d/kanku.sh
        install -m 644 dist/tmpfiles.d-kanku 
$(DESTDIR)/usr/lib/tmpfiles.d/kanku.conf
        install -m 644 dist/_etc_apache2_conf.d_kanku-worker.conf 
$(DESTDIR)/etc/apache2/conf.d/kanku-worker.conf
@@ -63,7 +62,7 @@
        done
        #
        for i in $(CONFIG_FILES);do \
-               cp -av ./etc/$$i $(DESTDIR)/etc/kanku/$$i ;\
+               cp -rv ./etc/$$i $(DESTDIR)/etc/kanku/$$i ;\
        done
 
 install_full_dirs: lib dbfiles public views bin sbin
@@ -82,21 +81,20 @@
        install -m 755 sbin/kanku-triggerd $(DESTDIR)/usr/sbin/kanku-triggerd
 
 public:
-       cp -av public $(DESTDIR)/usr/share/kanku/
+       cp -rv public $(DESTDIR)/usr/share/kanku/
 
 views:
-       cp -av views $(DESTDIR)/usr/share/kanku/
+       cp -rv views $(DESTDIR)/usr/share/kanku/
 
 dbfiles:
-       cp -av share/migrations $(DESTDIR)/usr/share/kanku/
-       cp -av share/fixtures $(DESTDIR)/usr/share/kanku/
+       cp -rv share/migrations $(DESTDIR)/usr/share/kanku/
+       cp -rv share/fixtures $(DESTDIR)/usr/share/kanku/
 
 lib:
-       cp -av ./lib/ $(DESTDIR)/usr/lib/kanku/
+       cp -rv ./lib/ $(DESTDIR)/usr/lib/kanku/
 
 install_dirs:
        [ -d $(DESTDIR)/etc/bash_completion.d/ ] || mkdir -p 
$(DESTDIR)/etc/bash_completion.d/
-       [ -d $(DESTDIR)/etc/logrotate.d/ ]       || mkdir -p 
$(DESTDIR)/etc/logrotate.d/
        [ -d $(DESTDIR)/etc/apache2/conf.d ]     || mkdir -p 
$(DESTDIR)/etc/apache2/conf.d
        [ -d $(DESTDIR)/etc/profile.d ]          || mkdir -p 
$(DESTDIR)/etc/profile.d
        [ -d $(DESTDIR)/etc/kanku ]              || mkdir -p 
$(DESTDIR)/etc/kanku
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.0.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.0.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.0.md    2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.0.md    2022-10-13 08:53:11.000000000 
+0200
@@ -1,21 +1,21 @@
-# Release 0.12.0
+# RELEASE 0.12.0
 
-## New Featues
+## FEATURES
 
 * [web]
   * new switch autostart to create persistent VM's
   * added login route (for GET method)
 * [cli]
-  * new commands "kanku snapshot ..."
-  * new options for "kanku ssh ..."
-    * --ipaddress to specify the ip address of the VM
-    * --execute to execute a single command via ssh
+  * new command `kanku snapshot ...`
+  * new options for `kanku ssh ...`:
+    * `--ipaddress` to specify the ip address of the VM (alias `-i`)
+    * `--execute` to execute a single command via ssh (alias `-e`)
   * use ssh_user from KankuFile for ssh command
-  * new options `--log_file/--log_stdout` for VM related commands
+  * new option: `--log_file/--log_stdout` for VM related commands
   * Suggest running ssh-add on auth fauilure when auth_type is 'agent'
 
 
-## Bugfixes
+## BUGFIXES
 
 * [web]
   * fix 'show only latest' in job history
@@ -25,16 +25,25 @@
   * various cleanups to avoid 'uninitialized value'
 * [dist]
   * fix tabs in default config template setup/kanku-config.yml.tt2
-* [handler]
-  * fix permissions for user kanku in PrepareSSH
-  * cleanup unused packages in CleanupIPTable
-* [util] set default for running_remotely in VM to 0
+  * K:H:PrepareSSH: fix permissions for user kanku
+  * K:H:CleanupIPTables: cleanup unused packages
+* [util]
+  * set default for running_remotely in VM to 0
+* [examples] updated configs
+  * updated to current opensuse
+  * deleted broken examples
+  * updated centos to latest version
+  * renamed centos -> centos-current
 
 
-## Example Configs
-
-* updated to current opensuse
-* deleted broken examples
-* updated centos to latest version
-* renamed centos -> centos-current
+
+## EXAMPLES
+
+This release containes a full functional version of the "Kanku VM Autostart" 
feature for kanku clusters.
+
+* Restart VMs
+* Restore VMs iptable rules
+
+![Screenshot Autostart 
Domain](img/kanku_screenshot-feature-autostart_domain.png)
+
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.1.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.1.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.1.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.1.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,8 @@
+# RELEASE 0.12.1
+
+## FEATURES
+
+* [dist] new systemd service kanku-iptables for master server
+
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.2.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.2.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.2.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.2.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,8 @@
+# RELEASE 0.12.2
+
+## BUGFIXES
+
+* [web] guest page - filter iptable rules by domain name
+
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.3.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.3.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.3.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.3.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,29 @@
+# RELEASE 0.12.3
+
+
+## ATTENTION:
+
+because instead of using iptables/ss/netstat directly we now use
+wrapper scripts with need to be added to the sudoers file.
+
+If you run kanku in developer mode you should re-run
+
+```kanku setup --devel```
+
+## FEATURES
+
+* [cli] check_configs command now also check job_group configs
+
+
+## BUGFIXES
+
+* [web] fix outdated cached settings in 'Job Groups'
+* [core] #boo 1196604 - wrapper scripts for iptables/ss/netstat
+* [dist] change default logging to stderr/journald
+* [util] VM::Image - use new buffer size while uncompressing
+* [urlwrapper] fixed x-scheme-handler_kanku
+* [handler] central config for host_interfaces for PortForward
+* [web] job groups config changes are now detected in web ui
+
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.4.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.4.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.4.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.4.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,9 @@
+# RELEASE 0.12.4
+
+## BUGFIXES
+
+* [util] improve vmdk performance (`cache=unsafe` in libvirt disk driver)
+* [web] fixed 'To Top'-button
+
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.5.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.5.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.5.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.5.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,13 @@
+# RELEASE 0.12.5
+
+## FEATURES
+
+* [cli] up: new alias for ```--skip_check_domain``` -> ```-S```
+* [cli] ssh: new option ```--agent_forward | -A```
+* [cli] up:  new option ```--skip_check_domain | -S```
+* [util] limit `use cache=unsafe` to vmdk images - speed improvement for other 
images
+* [dist] fixed order of iptables rules when using multiple networks (server 
mode)
+* [handler] SetupNetwork: changed get_ipaddress to console
+
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.6.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.6.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.6.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.6.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,99 @@
+# RELEASE 0.12.6
+
+## FEATURES
+
+* [cli] up: new special job `__ALL__` where a sequence of jobs can be defined 
in an array
+* [cli] up: multiple jobs can now be specified as options
+* [handler] new Kanku::Handler::CopyProfile
+
+
+
+## EXAMPLES
+
+#### CLI: up - special configuration `__ALL__`
+
+In KankuFile:
+
+
+    domain_name: saltmaster
+    default_job: saltmaster
+
+    jobs:
+      __ALL__:
+        - clean
+        - saltmaster
+        - admin-hosts
+        - service-servers
+        ...
+      clean:
+        ...
+      saltmaster:
+        ...
+      service-servers:
+        ...
+      ...
+
+
+On the cli:
+
+```kanku up -j __ALL__ -S```
+
+#### CLI: up - specify multiple jobs in one command line
+
+```kanku up -j job1 -j job2```
+
+#### Handler: Kanku::Handler::CopyProfile
+
+To use this Handler you need a configuration section in your
+~/.kanku/kanku-config.yml like the following to specify the commands
+which should be executed
+
+
+    Kanku::Handler::CopyProfile:
+      user: kanku
+      tasks:
+        - cmd: cp
+          src: ~/.gitconfig
+        - cmd: cp
+          src: ~/.vimrc
+        - cmd: cp
+          src: ~/.vim/
+          recursive: 1
+        - cmd: mkdir
+          path: ~/.config/
+        - cmd: cp
+          src: ~/.config/osc/
+          dst: ~/.config/osc/
+          recursive: 1
+        - cmd: chown
+          owner: kanku:users
+          recursive: 1
+          path: ~/.config/
+        - cmd: chmod
+          mode: 700
+          path: ~/.config/
+
+
+And you need an entry in your KankuFile job, where you can specify the users
+for which this profile should be copied.
+
+
+    jobs:
+      default_job:
+        ...
+        -
+          use_module: Kanku::Handler::CopyProfile
+          options:
+            users:
+              - root
+              - kanku
+
+
+ ATM the following commands (cmd) are available:```
+
+ * mkdir
+ * cp
+ * chmod
+ * chown
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.12.7.md 
new/kanku-0.13.0/RELEASE-NOTES-0.12.7.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.12.7.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.12.7.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,9 @@
+# RELEASE 0.12.7
+
+## BUGFIXES
+
+* [handler] K:H:GIT - fixed gituser/gitpass handling
+* [cli] up: fixed special job `__ALL__`
+
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/RELEASE-NOTES-0.13.0.md 
new/kanku-0.13.0/RELEASE-NOTES-0.13.0.md
--- old/kanku-0.12.7/RELEASE-NOTES-0.13.0.md    1970-01-01 01:00:00.000000000 
+0100
+++ new/kanku-0.13.0/RELEASE-NOTES-0.13.0.md    2022-10-13 08:53:11.000000000 
+0200
@@ -0,0 +1,18 @@
+# RELEASE 0.13.0
+
+## FEATURES
+
+* [core] refactored rabbmitmq handling in worker and dispatcher
+* [handler] Reboot: new option 'login_timeout' to wait for console
+* [handler] SaltSSH: added multiple attributes
+* [dist] removed kanku-web.log from default logging conf
+* [dist] remove logrotate config - now done with journald
+* [cli] ssh: new parameter --x11_forward/-X to enable ssh x11 forwarding
+
+
+
+<h3>Examples</h3>
+<h4>X-Forwarding for `kanku ssh`</h4>
+<code>kanku ssh -X</code>
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/contrib/p2h new/kanku-0.13.0/contrib/p2h
--- old/kanku-0.12.7/contrib/p2h        2022-06-23 18:51:02.000000000 +0200
+++ new/kanku-0.13.0/contrib/p2h        1970-01-01 01:00:00.000000000 +0100
@@ -1,77 +0,0 @@
-#!/usr/bin/perl
-#
-# This file is part of Pod-Markdown
-#
-# This software is copyright (c) 2011 by Randy Stauner.
-#
-# This is free software; you can redistribute it and/or modify it under
-# the same terms as the Perl 5 programming language system itself.
-#
-use 5.008;
-use strict;
-use warnings;
-# PODNAME: pod2markdown
-# ABSTRACT: Convert POD text to Markdown
-
-my $debuglevel = 9;
-use Pod::Simple::Debug (\$debuglevel, 0);
-use Pod::Simple::HTML;
-use FindBin;
-use File::Find;
-use File::Path qw(make_path remove_tree);
-use File::Basename;
-use Data::Dumper;
-use URI::Escape;
-
-my %opts = (
-  output_encoding => 'UTF-8',
-  perldoc_url_prefix => './',
-);
-
-my $outdir = "$FindBin::Bin/../pod";
-my $indir  = "$FindBin::Bin/../lib/";
-
-my %files;
-my %podhtml_LOT;
-
-find({wanted => sub {
-  
-  if ( $File::Find::name =~ m#$indir([^.].*)[.](pm|pod)# ) {
-    my $p = $1;
-    my $f = "$1.$2";
-    $p =~ s#/#::#g;
-    $files{$p} = $f;
-    my $h = uri_escape($p);
-    $podhtml_LOT{$p} = "./$h.html";
-}}}, $indir);
-
-remove_tree($outdir);
-
-while (my ($package, $file) = each %files) {
-  my $of = "$outdir/$package.html";
-  my $od = dirname($of);
-  -d $od || make_path($od);
-
-  convert("$indir/$file", $of);
-}
-
-exit 0;
-
-sub convert {
-    my ($in_file, $out_file) = @_;
-    my $p = Pod::Simple::HTML->new;
-    $p->{podhtml_LOT} = \%podhtml_LOT;
-    my $html;
-    $p->output_string(\$html);
-    $p->parse_file($in_file);
-    if ($html) {
-      print "$out_file\n";
-      my $of;
-      open($of, '>', $out_file) || die "Could not open $of: $!\n";
-      binmode $of, ':bytes';
-      print $of $html;
-      close $of;
-    }
-}
-
-__END__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/dist/kanku.logrotate 
new/kanku-0.13.0/dist/kanku.logrotate
--- old/kanku-0.12.7/dist/kanku.logrotate       2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/dist/kanku.logrotate       1970-01-01 01:00:00.000000000 
+0100
@@ -1,8 +0,0 @@
-/var/log/kanku/kanku.log 
-/var/log/kanku/kanku-web.log 
-{
-  daily
-  rotate 7
-  copytruncate
-  missingok
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/dist/kanku.spec 
new/kanku-0.13.0/dist/kanku.spec
--- old/kanku-0.12.7/dist/kanku.spec    2022-06-23 18:51:02.000000000 +0200
+++ new/kanku-0.13.0/dist/kanku.spec    2022-10-13 08:53:11.000000000 +0200
@@ -173,7 +173,6 @@
 # but perl-DBD-SQLite-Amalgamation is breaks with SQL syntax errors
 # at job_histroy_sub table
 Requires:       perl-DBD-SQLite
-Requires:       logrotate
 Requires:       perl(Archive::Cpio)
 Requires:       perl(LWP::Protocol::https)
 Requires:       perl(Mail::Sendmail)
@@ -193,7 +192,7 @@
 %tmpfiles_create %_tmpfilesdir/kanku.conf
 
 %files common
-%doc README.md RELEASE-NOTES-0.11.0.md RELEASE-NOTES-0.12.0.md
+%doc README.md RELEASE-NOTES-*.md CHANGELOG.md
 
 %dir /usr/lib/kanku
 %dir /usr/lib/kanku/lib
@@ -245,9 +244,6 @@
 %exclude %dir /etc/profile.d
 %config /etc/profile.d/kanku.sh
 
-%exclude %dir /etc/logrotate.d/
-%config /etc/logrotate.d/kanku-common
-
 %exclude %dir %_tmpfilesdir
 %_tmpfilesdir/kanku.conf
 
@@ -347,7 +343,6 @@
 
 %files common-server
 %defattr(-, root, root)
-%dir %attr(755, kankurun, kanku) /var/log/kanku
 %dir %attr(755, kankurun, kanku) /var/lib/kanku
 %dir %attr(755, kankurun, kanku) /var/lib/kanku/db
 %dir %attr(755, kankurun, kanku) /var/cache/kanku
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/etc/logging/default.conf 
new/kanku-0.13.0/etc/logging/default.conf
--- old/kanku-0.12.7/etc/logging/default.conf   2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/etc/logging/default.conf   2022-10-13 08:53:11.000000000 
+0200
@@ -4,11 +4,3 @@
 log4perl.appender.LOGFILE.stderr                     = 1
 log4perl.appender.LOGFILE.layout                     = 
Log::Log4perl::Layout::PatternLayout
 log4perl.appender.LOGFILE.layout.ConversionPattern   = %C %L - %m%n
-
-
-log4perl.category.WebUI = DEBUG, WebUILog
-log4perl.appender.WebUILog=Log::Log4perl::Appender::File
-log4perl.appender.WebUILog.filename=/var/log/kanku/kanku-web.log
-log4perl.appender.WebUILog.mode=append
-log4perl.appender.WebUILog.layout=PatternLayout
-log4perl.appender.WebUILog.layout.ConversionPattern=[%d] %F %L - %m%n
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Cli/ssh.pm 
new/kanku-0.13.0/lib/Kanku/Cli/ssh.pm
--- old/kanku-0.12.7/lib/Kanku/Cli/ssh.pm       2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/lib/Kanku/Cli/ssh.pm       2022-10-13 08:53:11.000000000 
+0200
@@ -66,35 +66,39 @@
   documentation => 'allow ssh agent forwarding',
 );
 
+option 'x11_forward' => (
+  isa           => 'Bool',
+  is            => 'rw',
+  cmd_aliases   => 'X',
+  documentation => 'allow X11 forwarding',
+);
+
 sub run {
   my ($self) = @_;
   my $cfg    = $self->cfg;
-  my $vm     = Kanku::Util::VM->new(
-                domain_name => $self->domain_name,
-                management_network  => $cfg->config->{management_network} || 
q{}
-              );
-  my $state = $vm->state;
-
-  if ( $state eq 'on' ) {
-    my $ip    = $self->ipaddress || $cfg->config->{ipaddress} || 
$vm->get_ipaddress;
-    my $user  = $self->user;
-    my $cmd   = $self->execute || q{};
-
-    $self->ipaddress($ip);
-    $self->username($user);
-    $self->job(Kanku::Job->new());
-    $self->connect();
-    my $A = ($self->agent_forward) ? q{-A} : q{};
-    system "ssh $A -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null 
-l $user $ip $cmd";
-    exit 0;
-  } elsif ($state eq 'off') {
-    $self->logger->warn('VM is off - use \'kanku startvm\' to start VM and try 
again');
-    exit 1;
-  } else {
-    $self->logger->fatal('No VM found or VM in state \'unknown\'');
-    exit 2;
+  my $user   = $self->user;
+  my $ip     = $self->ipaddress;
+  my $A      = ($self->agent_forward) ? q{-A} : q{};
+  my $X      = ($self->x11_forward) ? q{-X} : q{};
+  my $cmd    = $self->execute || q{};
+  if (!$ip) {
+    my $vm     = Kanku::Util::VM->new(
+                 domain_name => $self->domain_name,
+                 management_network  => $cfg->config->{management_network} || 
q{}
+               );
+    my $state = $vm->state;
+    if ( $state eq 'on' ) {
+      $ip    = $cfg->config->{ipaddress} || $vm->get_ipaddress;
+    } elsif ($state eq 'off') {
+      $self->logger->warn('VM is off - use \'kanku startvm\' to start VM and 
try again');
+      exit 1;
+    } else {
+      $self->logger->fatal('No VM found or VM in state \'unknown\'');
+      exit 2;
+    }
   }
-
+  system "ssh $A $X -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null 
-l $user $ip $cmd";
+  exit 0;
 }
 
 __PACKAGE__->meta->make_immutable;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Daemon/Worker.pm 
new/kanku-0.13.0/lib/Kanku/Daemon/Worker.pm
--- old/kanku-0.12.7/lib/Kanku/Daemon/Worker.pm 2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/lib/Kanku/Daemon/Worker.pm 2022-10-13 08:53:11.000000000 
+0200
@@ -34,9 +34,8 @@
                               , default => sub {uuid()});
 
 has kmq                   => (is=>'rw', isa => 'Object');
-has job_queue_name        => (is=>'rw', isa => 'Str');
-has remote_job_queue_name => (is=>'rw', isa => 'Str');
-has local_job_queue_name  => (is=>'rw', isa => 'Str');
+has remote_key_name => (is=>'rw', isa => 'Str');
+has local_key_name  => (is=>'rw', isa => 'Str');
 
 has hostname              => (is=>'rw',
                               isa => 'Str',
@@ -71,9 +70,8 @@
 
   if (! $pid ) {
     my $hn = $self->hostname;
-    $self->local_job_queue_name($hn) if ($hn);
+    $self->local_key_name($hn) if ($hn);
     $self->listen_on_queue(
-      queue_name     => "worker-to_all_hosts-". $self->worker_id,
       routing_key    => 'kanku.to_all_hosts',
     );
   } else {
@@ -85,7 +83,6 @@
 
   if (! $pid ) {
     $self->listen_on_queue(
-      queue_name    => "worker-to_all_workers-" . $self->worker_id,
       routing_key   => 'kanku.to_all_workers'
     );
   } else {
@@ -128,11 +125,10 @@
     $kmq = Kanku::RabbitMQ->new(%{$rabbit_config});
     $kmq->shutdown_file($self->shutdown_file);
     $kmq->connect();
-    my $qn = $kmq->create_queue(
-      queue_name    => $opts{queue_name},
+    $kmq->create_queue(
       routing_key   => $opts{routing_key},
     );
-    $self->local_job_queue_name($qn);
+    $self->local_key_name($opts{routing_key});
   } catch {
     $logger->error("Could not create queue for exchange $opts{exchange_name}: 
$_");
   };
@@ -157,18 +153,19 @@
          my $answer = {
            action => 'task_confirmation',
            task_id => $data->{task_id},
-           # answer_queue is needed on dispatcher side
+           # answer_key is needed on dispatcher side
            # to distinguish the results per worker host
-           answer_queue => $self->local_job_queue_name
+           answer_key => $self->local_key_name
          };
-         $self->remote_job_queue_name($data->{answer_queue});
+         $logger->debug($self->dump_it($data));
+         $self->remote_key_name($data->{answer_key});
          $kmq->publish(
-           $self->remote_job_queue_name,
+           $self->remote_key_name,
            encode_json($answer),
          );
 
          $self->handle_task($data,$kmq);
-          $self->remote_job_queue_name('');
+          $self->remote_key_name('');
        } elsif ( $data->{action} eq 'advertise_job' ) {
           my @seen_already = grep { $data->{job_id} == $_ } @seen;
           if (! @seen_already) {
@@ -217,18 +214,17 @@
   my $logger = $self->logger();
 
   $logger->debug("Starting to handle advertisement");
-  $logger->trace("\$data = ".$self->dump_it($data));
 
-  if ( $data->{answer_queue} ) {
-      $self->remote_job_queue_name($data->{answer_queue});
+  if ( $data->{answer_key} ) {
+      $logger->debug("\$data = ".$self->dump_it($data));
+      $self->remote_key_name($data->{answer_key});
       my $job_id = $data->{job_id};
-      $self->local_job_queue_name("job-$job_id-".$self->worker_id);
+      $self->local_key_name("job-$job_id-".$self->worker_id);
       my $answer = "Process '$$' is applying for job '$job_id'";
 
       my $job_kmq = Kanku::RabbitMQ->new(
         %{$kmq->connect_info},
-        queue_name  => $self->local_job_queue_name,
-        routing_key => $self->local_job_queue_name,
+        routing_key => $self->local_key_name,
       );
       $job_kmq->connect();
       $job_kmq->create_queue();
@@ -238,16 +234,16 @@
         message              => $answer ,
         worker_fqhn   => hostfqdn(),
         worker_pid    => $$,
-        answer_queue  => $self->local_job_queue_name,
+        answer_key    => $self->local_key_name,
         resources     => collect_resources(),
         action        => 'apply_for_job'
       };
-      $logger->debug("Sending application for job_id $job_id on queue 
".$self->remote_job_queue_name);
+      $logger->debug("Sending application for job_id $job_id with routing_key 
".$self->remote_key_name);
       $logger->trace("\$application =".$self->dump_it($application));
 
       my $json    = encode_json($application);
       $kmq->publish(
-        $self->remote_job_queue_name,
+        $self->remote_key_name,
         $json,
       );
 
@@ -258,15 +254,15 @@
       if ( $msg ) {
         my $body = decode_json($msg->{body});
         if ( $body->{action} eq 'offer_job' ) {
-          $logger->info("Starting with job ");
+          $logger->info("Starting with job ".$job_id);
           $logger->trace("\$msg =".$self->dump_it($msg));
           $logger->trace("\$body =".$self->dump_it($body));
 
           $self->handle_job($job_id,$job_kmq);
         } elsif ( $body->{action} eq 'decline_application' ) {
           $logger->debug("Nothing to do - application declined");
-          $self->remote_job_queue_name('');
-          $self->local_job_queue_name('');
+          $self->remote_key_name('');
+          $self->local_key_name('');
           return;
         } else {
           $logger->error("Answer on application for job $job_id unknown");
@@ -298,10 +294,10 @@
         job_id        => $job_id,
     };
 
-    $logger->info("Sending 'aborted_job' because of TERM signal to 
'".$self->remote_job_queue_name);
+    $logger->info("Sending 'aborted_job' because of TERM signal to 
routing_key'".$self->remote_key_name);
 
     $job_kmq->publish(
-      $self->remote_job_queue_name,
+      $self->remote_key_name,
       encode_json($answer),
     );
 
@@ -309,8 +305,11 @@
   };
 
   try  {
+    my $task_wait = 10000;
+    $logger->debug("Waiting $task_wait msec for tasks on queue: 
".$job_kmq->queue_name." with routing_key: ".$job_kmq->routing_key);
     while (1){
-      my $task_msg = $job_kmq->recv(10000);
+      my $task_msg = $job_kmq->recv($task_wait);
+      $logger->debug("ping");
       if ( $self->detect_shutdown ) {
        my $answer = {
            action        => 'aborted_job',
@@ -318,10 +317,10 @@
             job_id        => $job_id,
        };
 
-       $logger->info("Sending action 'aborted_job' because of daemon shutdown 
to '".$self->remote_job_queue_name);
+       $logger->info("Sending action 'aborted_job' because of daemon shutdown 
to routing_key '".$self->remote_key_name."'");
 
        $job_kmq->publish(
-         $self->remote_job_queue_name,
+         $self->remote_key_name,
          encode_json($answer),
        );
 
@@ -358,7 +357,7 @@
     $logger->error($e);
 
     $job_kmq->publish(
-      $self->remote_job_queue_name,
+      $self->remote_key_name,
       encode_json({
         action        => 'finished_task',
         error_message => $e
@@ -399,6 +398,7 @@
       error_message => $_
     };
   };
+  $self->logger->debug("XXXXX ".$job_kmq->routing_key.", $job, $result");
   $self->_send_task_result($job_kmq, $job, $result);
   return;
 }
@@ -407,22 +407,22 @@
   my ($self, $job_kmq, $job, $result) = @_;
   my $logger = $self->logger;
 
-  $logger->debug("Sending task result (state: $result->{state}) to 
".$self->remote_job_queue_name);
+  $logger->debug("Sending task result (state: $result->{state}) to 
".$self->remote_key_name." ROUTINGKEY: ".$job_kmq->routing_key);
 
   $result->{result} = encode_base64($result->{result}) if ($result->{result});
 
   my $answer = {
       action        => 'finished_task',
       result        => $result,
-      answer_queue  => $self->local_job_queue_name,,
+      answer_key    => $self->local_key_name,
       job           => $job->to_json
   };
 
-  $logger->trace("\$answer = ".$self->dump_it($answer));
+  $logger->debug("\$answer = ".$self->dump_it($answer));
 
 
   $job_kmq->publish(
-    $self->remote_job_queue_name,
+    $self->remote_key_name,
     encode_json($answer),
   );
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Dispatch/RabbitMQ.pm 
new/kanku-0.13.0/lib/Kanku/Dispatch/RabbitMQ.pm
--- old/kanku-0.12.7/lib/Kanku/Dispatch/RabbitMQ.pm     2022-06-23 
18:51:02.000000000 +0200
+++ new/kanku-0.13.0/lib/Kanku/Dispatch/RabbitMQ.pm     2022-10-13 
08:53:11.000000000 +0200
@@ -49,6 +49,10 @@
 
 has job_queue => (is=>'rw',isa=>'Object');
 
+has job_remote_routing_key => (is=>'rw', isa=>'Str');
+
+has job_local_routing_key => (is=>'rw', isa=>'Str');
+
 has wait_for_workers => (is=>'ro',isa=>'Int',default=>1);
 
 has config => (
@@ -96,7 +100,6 @@
     my $rmq = Kanku::RabbitMQ->new(%{$self->rabbit_config});
     $rmq->shutdown_file($self->shutdown_file);
     $rmq->connect() || die "Could not connect to rabbitmq\n";
-    $rmq->queue_name("dispatcher");
     $rmq->create_queue(routing_key=>'kanku.to_dispatcher');
     while (1) {
       my $msg = $rmq->recv(1000);
@@ -208,7 +211,7 @@
   });
 
   my $logger       = $self->logger();
-  my $queue        = "job-queue-".$job->id;
+  $self->job_local_routing_key("kanku.job-".$job->id);
 
   # job definition should be parsed before advertising job
   # if no valid job definition it should not be advertised
@@ -218,8 +221,7 @@
   my $rmq = Kanku::RabbitMQ->new(%{$self->rabbit_config});
   $rmq->shutdown_file($self->shutdown_file);
   $rmq->connect() || die "Could not connect to rabbitmq\n";
-  $rmq->queue_name($queue);
-  $rmq->create_queue(routing_key=>$queue);
+  $rmq->create_queue(routing_key=>$self->job_local_routing_key);
   $self->job_queue($rmq);
 
   my $applications={};;
@@ -228,7 +230,7 @@
     $applications = $self->advertise_job(
       $rmq,
       {
-        answer_queue     => $queue,
+        answer_key       => $self->job_local_routing_key,
         job_id           => $job->id,
         arch             => $job_definition->{arch} || 'x86_64',
       }
@@ -240,11 +242,11 @@
   $logger->trace("List of all applications:\n" . 
$self->dump_it($applications));
 
   # pa = prefered_application
-  my ($pa,$declined_applications) = $self->score_applications($applications);
+  my ($pa, $declined_applications) = $self->score_applications($applications);
 
   $self->decline_applications($declined_applications);
 
-  my $result = $self->send_job_offer($rmq,$pa);
+  my $result = $self->send_job_offer($rmq, $pa);
 
   $self->notify_queue->send({
     type          => 'job_change',
@@ -254,11 +256,11 @@
     id             => $job->id
   });
 
-  my $aq = $pa->{answer_queue};
+  $self->job_remote_routing_key($pa->{answer_key});
 
   $self->start_job($job);
 
-  $job->workerinfo($pa->{worker_fqhn}.":".$pa->{worker_pid}.":".$aq);
+  
$job->workerinfo($pa->{worker_fqhn}.":".$pa->{worker_pid}.":".$self->job_remote_routing_key);
   $logger->trace("Result of job offer:\n".$self->dump_it($result));
   $logger->trace("  -- args:\n".$self->dump_it($args));
 
@@ -267,6 +269,7 @@
   try {
     foreach my $sub_task (@{$job_definition->{tasks}}) {
       my $task_args = shift(@$args) || {};
+      #$self->logger->debug("ROUTING_KEY: ".$rmq->routing_key." QUEUE: 
".$rmq->queue_name);
       $last_task = $self->run_task(
        job       => $job,
        options   => $sub_task->{options} || {},
@@ -274,7 +277,7 @@
        scheduler => $self,
        args      => $task_args,
        kmq       => $rmq,
-       queue     => $aq
+       routing_key => $self->job_local_routing_key,
       );
 
       last if ( $last_task->state eq 'failed' or $job->skipped);
@@ -297,7 +300,7 @@
     id            => $job->id
   });
 
-  $self->send_finished_job($aq,$job->id);
+  $self->send_finished_job($self->job_remote_routing_key, $job->id);
 
   $self->end_job($job,$last_task);
 
@@ -350,17 +353,20 @@
       schema          => $self->schema
     );
   } elsif ( $distributable == 1 ) {
+    $logger->debug("--- Calling Kanku::Task::Remote - 
".$self->job_queue->routing_key);
+    $logger->debug("--- Calling Kanku::Task::Remote - ".$opts{routing_key});
+    $self->job_queue->routing_key($self->job_remote_routing_key);
     $tr = Kanku::Task::Remote->new(
       %defaults,
-      job_queue => $self->job_queue,
-      queue     => $opts{queue},
-      daemon   => $self,
+      job_queue  => $self->job_queue,
+      daemon    => $self,
+      answer_key =>  $self->job_local_routing_key,
     );
   } elsif ( $distributable == 2 ) {
     $tr = Kanku::Task::RemoteAll->new(
       %defaults,
       kmq => $opts{kmq},
-      local_job_queue_name => $opts{kmq}->queue_name,
+      local_key_name => $opts{routing_key},
     );
   } else {
     croak("Unknown distributable value '$distributable' for module $mod\n");
@@ -401,13 +407,13 @@
   $logger->trace("\$prefered_application = 
".$self->dump_it($prefered_application));
 
   $rmq->publish(
-    $prefered_application->{answer_queue},
-       encode_json(
-               {
-                 action                        => 'offer_job',
-                 answer_queue          => $prefered_application->{answer_queue}
-               }
-       ),
+    $prefered_application->{answer_key},
+    encode_json(
+      {
+        action                 => 'offer_job',
+        answer_key             => $prefered_application->{answer_key}
+      }
+    ),
   );
 }
 
@@ -420,10 +426,12 @@
 
   $self->job_queue->publish(
     $aq,
-    encode_json({
-          action  => 'finished_job',
-          job_id  => $job_id
-    }),
+    encode_json(
+      {
+        action  => 'finished_job',
+        job_id  => $job_id
+      }
+    ),
   );
 }
 
@@ -453,19 +461,23 @@
 
   my $data = encode_json({action => 'advertise_job', %$opts});
 
-  $logger->debug("creating new queue: ".$opts->{answer_queue}." (arch: 
".$opts->{arch}.")");
-
   my $wcnt = 0;
 
   while(! %$all_applications ) {
 
+    $logger->debug('Publishing application: '.$self->dump_it($data));
+
     $rmq->publish(
       'kanku.to_all_workers',
       $data,
     );
 
+    $logger->debug('Wait for workers: '.$self->wait_for_workers);
+
     sleep($self->wait_for_workers);
 
+    $logger->debug('Looking for applications on : '.$rmq->queue_name);
+
     while ( my $msg = $rmq->recv(1000) ) {
       if ($msg ) {
           my $data;
@@ -474,7 +486,7 @@
           try {
             $data = decode_json($body);
             $logger->debug("Incomming application for $data->{job_id} from 
$data->{worker_fqhn} ($data->{worker_pid}))");
-            $all_applications->{$data->{answer_queue}} = $data;
+            $all_applications->{$data->{answer_key}} = $data;
           } catch {
             $logger->debug("Error in JSON:\n$_\n$body\n");
           };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Handler/Reboot.pm 
new/kanku-0.13.0/lib/Kanku/Handler/Reboot.pm
--- old/kanku-0.12.7/lib/Kanku/Handler/Reboot.pm        2022-06-23 
18:51:02.000000000 +0200
+++ new/kanku-0.13.0/lib/Kanku/Handler/Reboot.pm        2022-10-13 
08:53:11.000000000 +0200
@@ -34,6 +34,7 @@
 has [qw/wait_for_network wait_for_console/] => (is => 
'rw',isa=>'Bool',lazy=>1,default=>1);
 has [qw/allow_ip_change/] => (is => 'rw',isa=>'Bool',lazy=>1,default=>0);
 has [qw/timeout/] => (is => 'rw',isa=>'Int',lazy=>1,default=>600);
+has [qw/login_timeout/] => (is => 'rw',isa=>'Int',lazy=>1,default=>0);
 
 has gui_config => (
   is => 'ro',
@@ -83,6 +84,7 @@
   my $con = $vm->console();
   $con->login();
   $con->cmd_timeout(-1);
+  $con->login_timeout($self->login_timeout) if $self->login_timeout;
   $con->cmd("reboot");
   $con->cmd_timeout($self->timeout);
   if ($self->wait_for_console) {
@@ -128,6 +130,7 @@
       wait_for_console: 1
       wait_for_network: 1
       timeout:          600
+      login_timeout:    900
       allow_ip_change:  1
       ....
 
@@ -146,6 +149,8 @@
 
     allow_ip_change:   allow VM to change ip address on reboot
 
+    login_timeout:     console login timeout
+
 =head1 CONTEXT
 
 =head2 getters
@@ -164,5 +169,7 @@
 
     allow_ip_change  : 0 (false)
 
+    login_timout     : defaults to Kanku::Util::VM::Console
+
 =cut
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Handler/SaltSSH.pm 
new/kanku-0.13.0/lib/Kanku/Handler/SaltSSH.pm
--- old/kanku-0.12.7/lib/Kanku/Handler/SaltSSH.pm       2022-06-23 
18:51:02.000000000 +0200
+++ new/kanku-0.13.0/lib/Kanku/Handler/SaltSSH.pm       2022-10-13 
08:53:11.000000000 +0200
@@ -25,25 +25,29 @@
 with 'Kanku::Roles::Handler';
 with 'Kanku::Roles::Logger';
 
-has [qw/ipaddress publickey_path privatekey_path passphrase username/] => 
(is=>'rw',isa=>'Str');
-has states   => (is=>'rw',isa=>'ArrayRef',default=>sub { [] });
-has loglevel => (is=>'rw',isa=>'Str', default=> 'debug');
+has [qw/ipaddress publickey_path privatekey_path passphrase/] => 
(is=>'rw',isa=>'Str');
+has states     => (is=>'rw',isa=>'ArrayRef',default=>sub { [] });
+has loglevel   => (is=>'rw',isa=>'Str', default=> '');
+has config_dir => (is=>'rw',isa=>'Str',default=>'.');
+has username   => (is=>'rw',isa=>'Str',default=>'root');
+has minion     => (is=>'rw',isa=>'Str');
 
 sub execute {
   my $self    = shift;
   my $results = [];
   my $ctx     = $self->job->context;
   my $ip      = $ctx->{ipaddress};
-  my @cmd = (
-    "salt-ssh",
-      "-l",$self->loglevel,
-      "--roster","scan",$ip,
-      '-i',
-      'state.apply',join(',',@{$self->states})
-  );
+  my @cmd = ('salt-ssh');
+  push @cmd, ('-l', $self->loglevel) if $self->loglevel;
+  push @cmd, ($self->minion) ? $self->minion : $self->ipaddress;
+  push @cmd, '--no-host-keys';
+  push @cmd, ('--user', $self->username) if $self->username;
+  push @cmd, 'state.apply';
+  push @cmd, join(',',@{$self->states}) if $self->states;
 
   $self->logger->debug("COMMAND: '@cmd'");
   system(@cmd);
+  die "Error while executing '@cmd'\n" if $?;
   return {
     code        => 0,
     message     => "All commands on $ip executed successfully",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/RabbitMQ.pm 
new/kanku-0.13.0/lib/Kanku/RabbitMQ.pm
--- old/kanku-0.12.7/lib/Kanku/RabbitMQ.pm      2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/lib/Kanku/RabbitMQ.pm      2022-10-13 08:53:11.000000000 
+0200
@@ -38,6 +38,7 @@
 use JSON::XS;
 use UUID ':all';
 use Try::Tiny;
+use Carp qw/longmess/;
 
 with 'Kanku::Roles::Logger';
 with 'Kanku::Roles::Helpers';
@@ -88,6 +89,13 @@
          isa     => 'Object',
 );
 
+#around routing_key => sub {
+#        my $orig = shift;
+#        my $self = shift;
+#      $self->logger->debug(longmess("HERE  @_"));
+#        $self->$orig(@_);
+#};
+#
 =head1 METHODS
 
 =head2 connect - connect to a rabbitmq server
@@ -258,7 +266,7 @@
       )
   );
 
-  $self->logger->debug("Started consuming ".$self->queue_name."' as 
consumer_id ".$self->consumer_id);
+  $self->logger->debug("Started consuming ".$self->queue_name."' 
(".$self->routing_key.") as consumer_id ".$self->consumer_id);
 
   return $qn;
 }
@@ -310,6 +318,8 @@
 
   $self->connect;
 
+  $self->queue_name(q{}) if $self->queue_name =~ /^amq\./;
+
   try {
     $self->create_queue;
   } catch {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Setup/LibVirt/Network.pm 
new/kanku-0.13.0/lib/Kanku/Setup/LibVirt/Network.pm
--- old/kanku-0.12.7/lib/Kanku/Setup/LibVirt/Network.pm 2022-06-23 
18:51:02.000000000 +0200
+++ new/kanku-0.13.0/lib/Kanku/Setup/LibVirt/Network.pm 2022-10-13 
08:53:11.000000000 +0200
@@ -220,10 +220,19 @@
       # Child runs this block
       setsid or die "Can't start a new session: $!";
       my $conf = $self->dnsmasq_cfg_file($name);
+      my $dhcp_script;
+      for my $f ('/usr/libexec/libvirt_leaseshelper', 
'/usr/lib64/libvirt/libvirt_leaseshelper') {
+        if (-x $f ) {
+          $dhcp_script = $f;
+          last;
+        }
+      }
+      confess("Could not find dhcp-script") unless $dhcp_script;
+
       my @cmd = ('/usr/sbin/dnsmasq',
                 "--conf-file=$conf",
                 "--leasefile-ro",
-                "--dhcp-script=/usr/lib64/libvirt/libvirt_leaseshelper");
+                "--dhcp-script=$dhcp_script");
       $self->logger->debug("@cmd");
       system(@cmd);
       exit 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Task/Remote.pm 
new/kanku-0.13.0/lib/Kanku/Task/Remote.pm
--- old/kanku-0.12.7/lib/Kanku/Task/Remote.pm   2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/lib/Kanku/Task/Remote.pm   2022-10-13 08:53:11.000000000 
+0200
@@ -72,11 +72,6 @@
   isa=>'HashRef',
 );
 
-has queue => (
-  is=>'rw',
-  isa=>'Str',
-);
-
 has rabbit_config => (
   is      => 'rw',
   isa     => 'HashRef',
@@ -86,6 +81,11 @@
   },
 );
 
+has answer_key => (
+  is=>'rw',
+  isa=>'Str',
+);
+
 
 sub run {
   my ($self)      = @_;
@@ -100,7 +100,7 @@
   my $data = encode_json(
     {
       action => 'task',
-      answer_queue => $self->job_queue->queue_name,
+      answer_key => $self->answer_key,
       job_id => $job->id,
       task_args => {
         job       => {
@@ -117,24 +117,24 @@
   $logger->debug('Sending remote job: '.$self->module);
   $logger->debug(' - channel: '.$kmq->channel);
   $logger->debug(' - routing_key '.$kmq->routing_key);
-  $logger->debug(' - queue_name '.$self->queue);
+  $logger->debug(' - queue_name '.$kmq->queue_name);
   $logger->trace(Dumper($data));
 
-  $kmq->queue->publish(
-       $kmq->channel,
-       $self->queue,
+  $kmq->publish(
+       $kmq->routing_key,
        $data,
   );
 
   $self->logger->debug('Waiting for result on queue: 
'.$self->job_queue->queue_name());
   # Wait for task results from worker
   my $result;
+  my $wait_for_answer = 10000;
   while (1){
-    my $msg = $self->job_queue->recv(10000);
+    my $msg = $self->job_queue->recv($wait_for_answer);
     if ( $msg ) {
       my $indata;
       $self->logger->debug('Incomming task result');
-      $self->logger->trace(Dumper($msg));
+      $self->logger->debug(Dumper($msg));
       my $body = $msg->{body};
 
       try {
@@ -171,7 +171,7 @@
         my $rmq = Kanku::RabbitMQ->new(%{$self->rabbit_config});
         $rmq->connect(no_retry=>1) ||
             $logger->error('Could not connect to rabbitmq');
-        my $queue = $indata->{answer_queue};
+        my $queue = $indata->{answer_key};
         $rmq->queue_name($queue);
         $rmq->publish(
           $queue,
@@ -179,6 +179,7 @@
         );
       }
     } else {
+      $self->logger->debug("Got no answer within $wait_for_answer msec");
       if ($self->daemon->detect_shutdown) {
        croak('Job '.$job->id." aborted by dispatcher daemon shutdown\n");
       }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Task/RemoteAll.pm 
new/kanku-0.13.0/lib/Kanku/Task/RemoteAll.pm
--- old/kanku-0.12.7/lib/Kanku/Task/RemoteAll.pm        2022-06-23 
18:51:02.000000000 +0200
+++ new/kanku-0.13.0/lib/Kanku/Task/RemoteAll.pm        2022-10-13 
08:53:11.000000000 +0200
@@ -46,9 +46,9 @@
 use MIME::Base64;
 
 
-has kmq              => (is=>'rw',isa=>'Object');
+has kmq               => (is=>'rw',isa=>'Object');
 
-has local_job_queue_name              => (is=>'rw',isa=>'Str');
+has local_key_name    => (is=>'rw',isa=>'Str');
 
 has job               => (is=>'rw',isa=>'Object');
 
@@ -74,7 +74,7 @@
   my $data = encode_json(
     {
       action => 'send_task_to_all_workers',
-      answer_queue => $self->local_job_queue_name,
+      answer_key => $self->local_key_name,
       task_args => {
         job       => {
           context     => $job->context,
@@ -87,6 +87,8 @@
     }
   );
 
+  $logger->debug(Dumper($data));
+
   $kmq->publish('kanku.to_all_hosts', $data);
 
   sleep($self->wait_for_workers);
@@ -179,16 +181,16 @@
     $data = decode_json($body);
     try {
       $data->{result}->{result} = decode_base64($data->{result}->{result}) if 
($data->{result}->{result});
-      $logger->debug("Got action '".$data->{action}."', answer_queue: 
'".$data->{answer_queue}."'" );
+      $logger->debug("Got action '".$data->{action}."', answer_key: 
'".$data->{answer_key}."'" );
     } catch {
       $logger->fatal("Error while decoding base64: $_");
       $logger->debug(Dumper($data));
       $data->{result} = "Error while decoding base64: $_";
     };
     if ( $data->{action} eq 'task_confirmation' ) {
-      $self->confirmations()->{$data->{answer_queue}} = $data;
+      $self->confirmations()->{$data->{answer_key}} = $data;
     } elsif ( $data->{action} eq 'finished_task' ) {
-      $self->results()->{$data->{answer_queue}} = $data;
+      $self->results()->{$data->{answer_key}} = $data;
     }
   } catch {
     $logger->debug("Error in JSON:\n$_\n$body\n");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kanku-0.12.7/lib/Kanku/Util/IPTables.pm 
new/kanku-0.13.0/lib/Kanku/Util/IPTables.pm
--- old/kanku-0.12.7/lib/Kanku/Util/IPTables.pm 2022-06-23 18:51:02.000000000 
+0200
+++ new/kanku-0.13.0/lib/Kanku/Util/IPTables.pm 2022-10-13 08:53:11.000000000 
+0200
@@ -112,7 +112,7 @@
   for my $table ('nat', 'filter') {
     if ($self->chain_exists($table)) {
       for my $rule ($self->_get_rules_from_chain($table)) {
-        push(@{$result->{$table}->{$chain}},$rule->{line_number}) if 
($rule->{domain_name} eq  $domain_name);
+        push(@{$result->{$table}->{$chain}},$rule->{line_number}) if 
(($rule->{domain_name}||q{}) eq  $domain_name);
       }
     }
   }

Reply via email to