train-core 3.10.0 → 3.10.7

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: 579bb940034fbb7c1d8f6e8025b0d364e5b78f2161efd6155a0f7d65f03af7e0
4
- data.tar.gz: f5ffb30dfd921debde3e54dc2f88d0f9c41644b02ec7bf3eb6d32797dcc81bc5
3
+ metadata.gz: 6d396bbb358c284289e040d532236fa26f2f92d73aa41dde56bf0b914a087238
4
+ data.tar.gz: e378a5a7c8af2cc8bcadc02abc1e99c310f73a182703edac027592074dfa8eba
5
5
  SHA512:
6
- metadata.gz: f6972393f3e6721198c850213d00e120c49668fe29fe60d50d2d465bf5839d9e0ee7281d14e98143d2bd9bb33130f6bee9e859e9c111c490dfdca02ea0d96a27
7
- data.tar.gz: a68a449c540c36712f68b69ef6103955e4bb10287c98b4448a65b0b103bdb8e9cbf401a3316bdca6a347e9fa85dd55fa4c1619fcb7ff4cc379fecb33032918b0
6
+ metadata.gz: e37b9360ad1d5c206c700b770e41d552d0a864dfec0df63fde6201c7c842b3f45f9bcb0ffc2f4f6413b55d5354864eae87c1488c2c7dc31228ab9b39da5509e1
7
+ data.tar.gz: 699adc38633ac5c01a0de55baa35ed4bacf060efff95a7c05d6afb324fff206c4920e29151b0ed23fb1ee2b7b4b57352323654df19a1393c2f22eae6de18678e
@@ -106,6 +106,7 @@ module Train::Platforms::Detect::Helpers
106
106
  m = res.match(/Cisco Nexus Operating System \(NX-OS\) Software/)
107
107
  unless m.nil?
108
108
  v = res[/^\s*system:\s+version (\d+\.\d+)/, 1]
109
+ v ||= res[/NXOS: version (\d+\.\d+)/, 1]
109
110
  return @cache[:cisco] = { version: v, type: "nexus" }
110
111
  end
111
112
 
@@ -383,7 +383,7 @@ module Train::Platforms::Detect::Specifications
383
383
  def self.load_other
384
384
  plat.family("arista_eos").title("Arista EOS Family").in_family("os")
385
385
  .detect do
386
- true
386
+ !@backend.run_command("show version").stdout.match(/Arista/).nil?
387
387
  end
388
388
 
389
389
  declare_instance("arista_eos", "Arista EOS", "arista_eos") do
data/lib/train/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # Author:: Dominik Richter (<dominik.richter@gmail.com>)
3
3
 
4
4
  module Train
5
- VERSION = "3.10.0".freeze
5
+ VERSION = "3.10.7".freeze
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: train-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.0
4
+ version: 3.10.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chef InSpec Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-06-28 00:00:00.000000000 Z
11
+ date: 2022-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '1.2'
88
88
  - - "<"
89
89
  - !ruby/object:Gem::Version
90
- version: '4.0'
90
+ version: '5.0'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
@@ -97,7 +97,7 @@ dependencies:
97
97
  version: '1.2'
98
98
  - - "<"
99
99
  - !ruby/object:Gem::Version
100
- version: '4.0'
100
+ version: '5.0'
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: net-ssh
103
103
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +107,7 @@ dependencies:
107
107
  version: '2.9'
108
108
  - - "<"
109
109
  - !ruby/object:Gem::Version
110
- version: '7.0'
110
+ version: '8.0'
111
111
  type: :runtime
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
@@ -117,7 +117,7 @@ dependencies:
117
117
  version: '2.9'
118
118
  - - "<"
119
119
  - !ruby/object:Gem::Version
120
- version: '7.0'
120
+ version: '8.0'
121
121
  description: A minimal Train with a backends for ssh and winrm.
122
122
  email:
123
123
  - inspec@chef.io
@@ -162,7 +162,6 @@ files:
162
162
  - lib/train/transports/cisco_ios_connection.rb
163
163
  - lib/train/transports/local.rb
164
164
  - lib/train/transports/mock.rb
165
- - lib/train/transports/podman.rb
166
165
  - lib/train/transports/ssh.rb
167
166
  - lib/train/transports/ssh_connection.rb
168
167
  - lib/train/version.rb
@@ -1,157 +0,0 @@
1
- require "docker"
2
- require_relative "../errors"
3
-
4
- module Train::Transports
5
- class Podman < Train.plugin(1)
6
-
7
- name "podman"
8
-
9
- include_options Train::Extras::CommandWrapper
10
- option :host, required: true
11
- option :podman_url, required: false
12
-
13
- def connection(state = {}, &block)
14
- opts = merge_options(options, state || {})
15
-
16
- validate_options(opts)
17
-
18
- if @connection && @connection_options == opts
19
- reuse_connection(&block)
20
- else
21
- create_new_connection(opts, &block)
22
- end
23
- end
24
-
25
- private
26
-
27
- # Creates a new Podman connection instance and save it for potential future
28
- # reuse.
29
- #
30
- # @param options [Hash] connection options
31
- # @return [Podman::Connection] a Podman connection instance
32
- # @api private
33
- def create_new_connection(options, &block)
34
- if @connection
35
- logger.debug("[Podman] shutting previous connection #{@connection}")
36
- @connection.close
37
- end
38
-
39
- @connection_options = options
40
- @connection = Connection.new(options, &block)
41
- end
42
-
43
- # Return the last saved Podman connection instance.
44
- #
45
- # @return [Podman::Connection] a Podman connection instance
46
- # @api private
47
- def reuse_connection
48
- logger.debug("[Podman] reusing existing connection #{@connection}")
49
- yield @connection if block_given?
50
- @connection
51
- end
52
- end
53
-
54
- class Train::Transports::Podman
55
- class Connection < BaseConnection
56
- def initialize(options)
57
- super(options)
58
-
59
- @id = options[:host]
60
-
61
- if RUBY_PLATFORM =~ /windows|mswin|msys|mingw|cygwin/
62
- raise "Unsupported host platform."
63
- end
64
-
65
- # Currently Podman url can be set using option and setting the environment variable.
66
- uid = Process.uid
67
- podman_url = options[:podman_url] || ENV["CONTAINER_HOST"]
68
- podman_url ||= "unix:///run/podman/podman.sock" if uid == 0
69
- podman_url ||= "unix:///run/user/#{uid}/podman/podman.sock"
70
-
71
- Docker.url = podman_url
72
-
73
- # Using docker-api ruby library to fetch the Podman container data.
74
- @container = ::Docker::Container.get(@id) ||
75
- raise("Can't find Podman container #{@id}")
76
- @cmd_wrapper = nil
77
- @cmd_wrapper = CommandWrapper.load(self, @options)
78
- @probably_windows = nil
79
- rescue Excon::Error::Socket
80
- raise Train::TransportError, "Unable to connect to Podman using #{podman_url}"
81
- rescue Docker::Error::NotFoundError => e
82
- raise Train::TransportError, "Container Not Found: #{e.message}"
83
- rescue Docker::Error::ServerError => e
84
- raise Train::TransportError, "#{e.message}"
85
- end
86
-
87
- def close
88
- # nothing to do at the moment
89
- end
90
-
91
- def uri
92
- if @container.nil?
93
- "podman://#{@id}"
94
- else
95
- "podman://#{@container.id}"
96
- end
97
- end
98
-
99
- def unique_identifier
100
- @container.nil? ? @id : @container.id # default uuid set to the podman host.
101
- end
102
-
103
- private
104
-
105
- def file_via_connection(path)
106
- if os.aix?
107
- Train::File::Remote::Aix.new(self, path)
108
- elsif os.solaris?
109
- Train::File::Remote::Unix.new(self, path)
110
- elsif os.windows?
111
- Train::File::Remote::Windows.new(self, path)
112
- else
113
- Train::File::Remote::Linux.new(self, path)
114
- end
115
- end
116
-
117
- def run_command_via_connection(cmd, &_data_handler)
118
- cmd = @cmd_wrapper.run(cmd) unless @cmd_wrapper.nil?
119
-
120
- # Cannot use os.windows? here because it calls run_command_via_connection,
121
- # causing infinite recursion during initial platform detection
122
- if sniff_for_windows?
123
- invocation = cmd_run_command(cmd)
124
- else
125
- invocation = sh_run_command(cmd)
126
- end
127
- stdout, stderr, exit_status = @container.exec(
128
- invocation, user: @options[:user]
129
- )
130
- CommandResult.new(stdout.join, stderr.join, exit_status)
131
- rescue ::Docker::Error::DockerError => _
132
- raise
133
- rescue => _
134
- # @TODO: differentiate any other error
135
- raise
136
- end
137
-
138
- def sh_run_command(cmd)
139
- ["/bin/sh", "-c", cmd]
140
- end
141
-
142
- def cmd_run_command(cmd)
143
- ["cmd.exe", "/s", "/c", cmd]
144
- end
145
-
146
- def sniff_for_windows?
147
- return @probably_windows unless @probably_windows.nil?
148
-
149
- # Run a command using /bin/sh, which should fail under Windows
150
- stdout, _stderr, _exit_status = @container.exec(
151
- sh_run_command("true"), user: @options[:user]
152
- )
153
- @probably_windows = !!stdout.detect { |l| l.include? "failure in a Windows system call" }
154
- end
155
- end
156
- end
157
- end