blackstack-nodes 1.2.14 → 1.2.16

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/blackstack-nodes.rb +30 -14
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ed42ce28e323788e17215ca87fc900d25493a140adce92d38c5eac9d0469ce8
4
- data.tar.gz: 4de3f22c58fb77ea176e6697594be8f44beb4079d1acb6b2a5e722f46be3ddd3
3
+ metadata.gz: 7030c06d185e9257db6bcf42deadcbcc1ac609f79140b8ce63f73f5368232144
4
+ data.tar.gz: adc175dd676a9b3940454342016ec82b96d771f885f6ca92d26f317d5f722331
5
5
  SHA512:
6
- metadata.gz: a0ca565b5076a4c50f1a7ac8ceacc81821ffa6147795c3ee24427e115910fe57f7ca6794a153358498fa6f96020619fafa22d48c34b137d2280c94a2b6489114
7
- data.tar.gz: '080428a73ccbb5b9cb189b32ea114ec9f7e1c93ec3a266ba42f5e21aed39566cf00616eb3d97bde1460dc1f9dd8ebaebd641894840c3836949492d15d75c1390'
6
+ metadata.gz: 2d3807f8df44577cff9d4b57329ad28e2a6216bce5566a178893ed390c2b6f943b45ddbd561b2fa793506010a586108468eb0e05c53e55ce81f36c74089bb2eb
7
+ data.tar.gz: 3cf124a33af4fcffaa3fd2b642fe561774d296cc629cc67d0e9bb865425eb5688fa13bf0e68b89a0272c1c7337b1fb06490b4669c86165bd421bbc88ef68d37a
@@ -117,31 +117,47 @@ module BlackStack
117
117
  self.ssh.close
118
118
  end
119
119
 
120
+ # Execute a command on the remote server and return the output.
121
+ # If the exit code of the command is not zero, an exception is raised, with the messages pushed into the stderr.
122
+ # If the exit code of the command is zero, the messages pushed into the stdout are returned.
123
+ #
124
+ # IMPORTANT: Messages pushed into stderr re not always error.
125
+ # Reference:
126
+ # - How to stop git from writing non-errors to stderr ?
127
+ # - https://stackoverflow.com/questions/57016157/how-to-stop-git-from-writing-non-errors-to-stderr
128
+ #
120
129
  def exec(
121
130
  command,
122
- output_file: "~/bash-command-stdout-buffer",
123
- error_file: "~/bash-command-stderr-buffer"
131
+ output_file: "$HOME/.bash-command-stdout-buffer",
132
+ error_file: "$HOME/.bash-command-stderr-buffer",
133
+ exit_code_file: "$HOME/.bash-command-exit-code"
124
134
  )
125
- # Construct the remote command with redirection for stdout and stderr
126
- remote_command = "#{command} > #{output_file} 2> #{error_file}"
135
+ # Construct the remote command with redirection for stdout, stderr, and capturing exit code
136
+ remote_command = "#{command} > #{output_file} 2> #{error_file}; echo $? > #{exit_code_file}"
127
137
 
128
- # Execute the command on the remote server
129
- self.ssh.exec!("truncate -s 0 #{output_file} #{error_file} && #{remote_command}")
138
+ # Execute the command on the remote server, truncating output, error, and exit code files
139
+ self.ssh.exec!("truncate -s 0 #{output_file} #{error_file} #{exit_code_file}")
130
140
 
141
+ # Execute the command on the remote server, truncating output, error, and exit code files
142
+ self.ssh.exec!(remote_command)
143
+
144
+ # Retrieve the exit code
145
+ exit_code = self.ssh.exec!("cat #{exit_code_file}").to_s.chomp.to_i
146
+
131
147
  # Retrieve the content of the error file from the remote server
132
148
  error_content = self.ssh.exec!("cat #{error_file}").to_s.chomp
133
-
134
- # Check if the error file has any content
135
- unless error_content.empty?
149
+
150
+ # Check if the exit code is not zero
151
+ if exit_code != 0
136
152
  # Raise an exception with the error message
137
- raise "Command failed with the following error:\n#{error_content}"
153
+ raise "Command failed with exit code #{exit_code}:\n#{error_content}"
138
154
  end
139
-
155
+
140
156
  # Retrieve and return the content of the output file from the remote server
141
- # truncate any last newline character
157
+ # Truncate any trailing newline character
142
158
  self.ssh.exec!("cat #{output_file}").to_s.chomp
143
- end
144
-
159
+ end # def exec
160
+
145
161
  def reboot()
146
162
  tries = 0
147
163
  max_tries = 20
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blackstack-nodes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.14
4
+ version: 1.2.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leandro Daniel Sardi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-13 00:00:00.000000000 Z
11
+ date: 2024-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh