kitchen-yansible-pusher 0.3.4 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: