kitchen-yansible-pusher 0.3.4 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f564803a26b2e5dcf9445c6d484e6583e4a24d06462814c76c77c67f71ea8438
4
- data.tar.gz: b4f532188c194fcd835d9cd826d58a39ad3a5cf66d94659d999e1d22e522aa1e
3
+ metadata.gz: e89aae4dfa7b1870e73abb1adc6b458dd14a3c9668ac6209178bba30927df464
4
+ data.tar.gz: c23dcdadcb0a35e4c09a68ab3a73587778d59969815ea298b0ad4e058944da28
5
5
  SHA512:
6
- metadata.gz: d4247120a0d5d4ff83da5aefbd67e4b862c906072b6d0cbd3373065982cb0b43890078f7c1d043f031d96d02f5091bdd904113e15c85e5b7c3ecac9eaad1f269
7
- data.tar.gz: 2741cafc49f5e129c6583fa35c95465e07b24b28c6e09e9f14df065972574faafae3f9706db8b6c3205f6010f6481b1f4a23c4786c9bc63c7827f475584d0a83
6
+ metadata.gz: da81032eb9743c1e1bfe2702bb2c241708433df326de54c02d29f503367d8bdf509b9d41d410902af3e3bed42b359f048dad719e02c51b83cac5bde464b6d0ab
7
+ data.tar.gz: 2ec83cfc5aebfbeb01c3f5049f27498ac8be74974e27e797196e76c5e154ce54c3e00f58e1947d8d9781fb716f1811fc1cc8a2320e0fc365315c2b85bfaddb4f
data/CHANGELOG.md CHANGED
@@ -2,7 +2,15 @@
2
2
 
3
3
  ## [Unreleased](https://github.com/jmtx1020/kitchen-yansible-pusher/tree/HEAD)
4
4
 
5
- [Full Changelog](https://github.com/jmtx1020/kitchen-yansible-pusher/compare/v0.3.3...HEAD)
5
+ [Full Changelog](https://github.com/jmtx1020/kitchen-yansible-pusher/compare/v0.3.4...HEAD)
6
+
7
+ **Merged pull requests:**
8
+
9
+ - updated to use Open3 to run instead of mixlib::shellout [\#18](https://github.com/jmtx1020/kitchen-yansible-pusher/pull/18) ([jmtx1020](https://github.com/jmtx1020))
10
+
11
+ ## [v0.3.4](https://github.com/jmtx1020/kitchen-yansible-pusher/tree/v0.3.4) (2024-09-29)
12
+
13
+ [Full Changelog](https://github.com/jmtx1020/kitchen-yansible-pusher/compare/v0.3.3...v0.3.4)
6
14
 
7
15
  **Merged pull requests:**
8
16
 
@@ -5,7 +5,7 @@ require 'kitchen/errors'
5
5
  require_relative '../yansible/pusher/version'
6
6
  require 'yaml'
7
7
  require 'English'
8
- require 'mixlib/shellout'
8
+ require 'open3'
9
9
 
10
10
  module Kitchen
11
11
  module Provisioner
@@ -58,11 +58,9 @@ module Kitchen
58
58
  end
59
59
 
60
60
  def run_command
61
- info("Running Ansible Playbook: #{config[:playbook]}")
62
61
  begin
63
62
  create_sandbox
64
63
  run_ansible
65
- info('Ansible Playbook Complete!')
66
64
  ensure
67
65
  cleanup_sandbox
68
66
  end
@@ -73,10 +71,44 @@ module Kitchen
73
71
 
74
72
  def run_ansible
75
73
  command = build_ansible_command
76
- info("Running Ansible Command: #{command}")
77
- cmd = Mixlib::ShellOut.new(command, :environment => ansible_env_vars(), :live_stream => logger)
78
- cmd.run_command
79
- raise Kitchen::ActionFailed, 'Ansible playbook execution failed' unless cmd.exitstatus == 0
74
+ log_file = ".kitchen/logs/#{instance.name}.log"
75
+ FileUtils.mkdir_p(File.dirname(log_file))
76
+ execute_ansible_command(command, log_file)
77
+ end
78
+
79
+ def execute_ansible_command(command, log_file)
80
+ File.open(log_file, 'w') do |file|
81
+ log_ansible_init(command, file)
82
+ execute_and_capture_ansible_output(command, file)
83
+ log_line('Ansible Playbook Complete!', file)
84
+ end
85
+ end
86
+
87
+ def log_ansible_init(command, file)
88
+ log_line("Running Ansible Playbook: #{config[:playbook]}", file)
89
+ log_line("Running Ansible Command: #{command}", file)
90
+ end
91
+
92
+ def execute_and_capture_ansible_output(command, file)
93
+ Open3.popen2e(ansible_env_vars, command) do |_stdin, stdout_and_stderr, wait_thr|
94
+ stdout_and_stderr.each do |line|
95
+ log_line(line, file)
96
+ end
97
+ check_execution_status(wait_thr)
98
+ end
99
+ end
100
+
101
+ def log_line(line, file)
102
+ line = line.chomp
103
+ info(line)
104
+ file.puts(line)
105
+ file.flush
106
+ end
107
+
108
+ def check_execution_status(wait_thr)
109
+ return if wait_thr.value.success?
110
+
111
+ raise Kitchen::ActionFailed, 'Ansible playbook execution failed'
80
112
  end
81
113
 
82
114
  def create_inventory
@@ -3,7 +3,7 @@
3
3
  module Kitchen
4
4
  module Yansible
5
5
  module Pusher
6
- VERSION = "0.3.4"
6
+ VERSION = "0.4.0"
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-yansible-pusher
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose M. Tobar
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-29 00:00:00.000000000 Z
11
+ date: 2024-10-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A modern & minimalistic Ansible provisioner for Test Kitchen.
14
14
  email: