From 276dcb74a4a7ab1a7fb917f8071cb9997a3735af Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Fri, 5 Apr 2024 13:07:06 +0200 Subject: [PATCH 1/3] Fixes #37320 - Set IDs on outputs --- lib/smart_proxy_ansible/runner/ansible_runner.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/smart_proxy_ansible/runner/ansible_runner.rb b/lib/smart_proxy_ansible/runner/ansible_runner.rb index 51302cd..b5c1eae 100644 --- a/lib/smart_proxy_ansible/runner/ansible_runner.rb +++ b/lib/smart_proxy_ansible/runner/ansible_runner.rb @@ -127,7 +127,7 @@ def hostname_for_event(event) def handle_host_event(hostname, event) log_event("for host: #{hostname.inspect}", event) - publish_data_for(hostname, event['stdout'] + "\n", 'stdout') if event['stdout'] + publish_data_for(hostname, event['stdout'] + "\n", 'stdout', id: event['uuid']) if event['stdout'] case event['event'] when 'runner_on_ok' publish_exit_status_for(hostname, 0) if @exit_statuses[hostname].nil? @@ -147,25 +147,23 @@ def handle_broadcast_data(event) header, *rows = event['stdout'].strip.lines.map(&:rstrip) # #lines strips the leading newline that precedes the header broadcast_data("\n" + header + "\n", 'stdout') - inventory_hosts = @outputs.keys.select { |key| key.is_a? String } rows.each do |row| host = inventory_hosts.find { |host| row =~ /#{host}/ } line = row + "\n" unless host - broadcast_data(line, 'stdout') + broadcast_data(line, 'stdout', id: event['uuid']) next end - publish_data_for(host, line, 'stdout') - + publish_data_for(host, line, 'stdout', id: event['uuid']) # If the task has been rescued, it won't consider a failure if @exit_statuses[host].to_i != 0 && failures[host].to_i <= 0 && unreachable[host].to_i <= 0 && rescued[host].to_i > 0 publish_exit_status_for(host, 0) end end else - broadcast_data(event['stdout'] + "\n", 'stdout') + broadcast_data(event['stdout'] + "\n", 'stdout', id: event['uuid']) end # If the run ends early due to an error - fail all other tasks From cdbf09ebc06581a2820f1b68974a8a3e48c7ac84 Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Fri, 1 Nov 2024 13:00:41 +0000 Subject: [PATCH 2/3] Bump dependency on smart_proxy_dynflow --- smart_proxy_ansible.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/smart_proxy_ansible.gemspec b/smart_proxy_ansible.gemspec index 431a6c4..433b434 100644 --- a/smart_proxy_ansible.gemspec +++ b/smart_proxy_ansible.gemspec @@ -34,6 +34,6 @@ Gem::Specification.new do |gem| gem.add_development_dependency('logger') gem.add_development_dependency('smart_proxy') gem.add_runtime_dependency('net-ssh') - gem.add_runtime_dependency('smart_proxy_dynflow', '~> 0.8') + gem.add_runtime_dependency('smart_proxy_dynflow', '~> 0.8', '>= 0.10') gem.add_runtime_dependency('smart_proxy_remote_execution_ssh', '~> 0.4') end From c69d2b5872a17e78a50623af265552392e92241a Mon Sep 17 00:00:00 2001 From: Adam Ruzicka Date: Fri, 1 Nov 2024 13:10:34 +0000 Subject: [PATCH 3/3] Refs #37320 - Set real timestamps on outputs --- lib/smart_proxy_ansible/runner/ansible_runner.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/smart_proxy_ansible/runner/ansible_runner.rb b/lib/smart_proxy_ansible/runner/ansible_runner.rb index b5c1eae..4ba15a0 100644 --- a/lib/smart_proxy_ansible/runner/ansible_runner.rb +++ b/lib/smart_proxy_ansible/runner/ansible_runner.rb @@ -127,7 +127,7 @@ def hostname_for_event(event) def handle_host_event(hostname, event) log_event("for host: #{hostname.inspect}", event) - publish_data_for(hostname, event['stdout'] + "\n", 'stdout', id: event['uuid']) if event['stdout'] + publish_data_for(hostname, event['stdout'] + "\n", 'stdout', id: event['uuid'], timestamp: event['created']) if event['stdout'] case event['event'] when 'runner_on_ok' publish_exit_status_for(hostname, 0) if @exit_statuses[hostname].nil? @@ -147,23 +147,25 @@ def handle_broadcast_data(event) header, *rows = event['stdout'].strip.lines.map(&:rstrip) # #lines strips the leading newline that precedes the header broadcast_data("\n" + header + "\n", 'stdout') + inventory_hosts = @outputs.keys.select { |key| key.is_a? String } rows.each do |row| host = inventory_hosts.find { |host| row =~ /#{host}/ } line = row + "\n" unless host - broadcast_data(line, 'stdout', id: event['uuid']) + broadcast_data(line, 'stdout', id: event['uuid'], timestamp: event['created']) next end - publish_data_for(host, line, 'stdout', id: event['uuid']) + publish_data_for(host, line, 'stdout', id: event['uuid'], timestamp: event['created']) + # If the task has been rescued, it won't consider a failure if @exit_statuses[host].to_i != 0 && failures[host].to_i <= 0 && unreachable[host].to_i <= 0 && rescued[host].to_i > 0 publish_exit_status_for(host, 0) end end else - broadcast_data(event['stdout'] + "\n", 'stdout', id: event['uuid']) + broadcast_data(event['stdout'] + "\n", 'stdout', id: event['uuid'], timestamp: event['created']) end # If the run ends early due to an error - fail all other tasks