diff --git a/lib/smart_proxy_ansible/runner/ansible_runner.rb b/lib/smart_proxy_ansible/runner/ansible_runner.rb index 7d74847..3fca8d6 100644 --- a/lib/smart_proxy_ansible/runner/ansible_runner.rb +++ b/lib/smart_proxy_ansible/runner/ansible_runner.rb @@ -130,7 +130,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'], timestamp: parse_timestamp(event['created'])) if event['stdout'] case event['event'] when 'runner_on_ok' publish_exit_status_for(hostname, 0) if @exit_statuses[hostname].nil? @@ -156,11 +156,11 @@ def handle_broadcast_data(event) host = inventory_hosts.find { |host| row =~ /#{host}/ } line = row + "\n" unless host - broadcast_data(line, 'stdout') + broadcast_data(line, 'stdout', id: event['uuid'], timestamp: parse_timestamp(event['created'])) next end - publish_data_for(host, line, 'stdout') + publish_data_for(host, line, 'stdout', id: event['uuid'], timestamp: parse_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 @@ -168,7 +168,7 @@ def handle_broadcast_data(event) end end else - broadcast_data(event['stdout'] + "\n", 'stdout') + broadcast_data(event['stdout'] + "\n", 'stdout', id: event['uuid'], timestamp: parse_timestamp(event['created'])) end # If the run ends early due to an error - fail all other tasks @@ -383,6 +383,13 @@ def extract_ports(host_data) host_data["ansible_port"] ].compact.uniq end + + def parse_timestamp(ts) + Time.iso8601(ts) + rescue ArgumentError + logger.warn("Failed to parse '#{ts}' (#{ts.class}) as iso8601 timestamp, defaulting to current timestamp") + Time.now.getlocal + end end end end diff --git a/smart_proxy_ansible.gemspec b/smart_proxy_ansible.gemspec index 6ff83b0..9c02ef8 100644 --- a/smart_proxy_ansible.gemspec +++ b/smart_proxy_ansible.gemspec @@ -28,6 +28,6 @@ Gem::Specification.new do |gem| gem.required_ruby_version = '>= 3.0' gem.add_development_dependency 'rake', '~> 13.0' - gem.add_runtime_dependency('smart_proxy_dynflow', '~> 0.8') + gem.add_runtime_dependency('smart_proxy_dynflow', '>= 0.9.4', '< 1.0.0') gem.add_runtime_dependency('smart_proxy_remote_execution_ssh', '>= 0.5.0', '< 2.0.0') end