train-kubernetes 0.1.4 → 0.1.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: 8054d36cd7aa95b6c66500cc6e2ef5a3a046a2953e909dcae9c28af25cceac27
4
- data.tar.gz: 8c34f5e7e0ef77c1c14363a862188839587c15037138920aae89b68769b7cfe9
3
+ metadata.gz: 8986e6c4d497daf88599d830bcad43f9206936666311c6c0c0fab15002e41985
4
+ data.tar.gz: d1c56b619bceddf1c957ae6b29dfebfa583177202c9f6412616d519ee9e2ad26
5
5
  SHA512:
6
- metadata.gz: 6e8ecdf58177aa1629142c518c7a8d7808be54469db423a1e6557c8bd9623fe3611fc50f58e6e171a0a32e68caf3eea404b48d0f4ce0955e41fce0c265605734
7
- data.tar.gz: 5989ed4276cd050ef76f0bc0e1cfef17c2e3a2ed3df5c37dc49caa53d4afbba88f1b1f9f24a9743209fb78c351844b53060c5ba6cdd8b35467adcc4027f93168
6
+ metadata.gz: e2cc0de3cded1306ef5edd69c47b8c66ee49dfd517ec9f50223d152c08debe4e01ed95d9d2d8714bf7dd30865b45d9db86422e284ec0ae1a7ba271495de9a03a
7
+ data.tar.gz: 8399e9ab6d48cbd741ff42208ca400a7e91f7b86bd76f0c4593b7e95c2c7daecc47135fead6faf0dd839e3cbe5bc2be2ed8cd4e7e5f4a998eed58be94eeb2d4d
data/README.md CHANGED
@@ -62,7 +62,7 @@ If it has the version set to `"= 0.1.3"`, modify it to `"0.1.3"` and save the fi
62
62
  Verify the plugin:
63
63
 
64
64
  ```
65
- inspec plugins list
65
+ inspec plugin list
66
66
  ```
67
67
 
68
68
  ```
@@ -81,7 +81,7 @@ If you run into issues installing via `inspec plugin install train-kubernetes`,
81
81
 
82
82
  * Try running `gem install train-kubernetes` before `inspec plugin install train-kubernetes`.
83
83
  * Ensure the `~/.inspec/plugins.json` has `"0.1.3"` and not `"= 0.1.3"` for the `version` value. Modify it by hand if needed.
84
- * Ensure you can cleanly install the `k8s-client` gem version `0.10.4` or greater. e.g. `gem install k8s-client -v 0.10.4`
84
+ * Ensure you can cleanly install the `k8s-ruby` gem version `0.10.4` or greater. e.g. `gem install k8s-ruby -v 0.10.4`
85
85
  * Ensure that only one version of the `excon` gem is installed. e.g. `gem list | grep excon`. If you see two versions, `gem uninstall excon` and remove the older version.
86
86
 
87
87
  ## Reporting Issues
@@ -1,5 +1,5 @@
1
1
  require 'train'
2
- require 'k8s-client'
2
+ require 'k8s-ruby'
3
3
  require 'train-kubernetes/platform'
4
4
 
5
5
  module TrainPlugins
@@ -9,7 +9,8 @@ module TrainPlugins
9
9
 
10
10
  def initialize(options)
11
11
  super(options)
12
-
12
+ @pod = options[:pod]
13
+ @container = options[:container]
13
14
  parse_kubeconfig
14
15
  connect
15
16
  end
@@ -35,6 +36,14 @@ module TrainPlugins
35
36
  kubeconfig_file = @options[:kubeconfig] if @options[:kubeconfig]
36
37
  @client = K8s::Client.config(K8s::Config.load_file(File.expand_path(kubeconfig_file)))
37
38
  end
39
+
40
+ private
41
+
42
+ attr_reader :pod, :container
43
+
44
+ def run_command_via_connection(cmd, &_data_handler)
45
+ KubectlClient.new(pod: pod, container: container).execute(cmd)
46
+ end
38
47
  end
39
48
  end
40
49
  end
@@ -0,0 +1,34 @@
1
+ require 'mixlib/shellout'
2
+
3
+ module TrainPlugins
4
+ module TrainKubernetes
5
+ class KubectlClient
6
+ attr_reader :pod, :container
7
+ def initialize(pod:, container: nil)
8
+ @pod = pod
9
+ @container = container
10
+ end
11
+
12
+ def execute(command, stdin: true, tty: true)
13
+ instruction = build_instruction(command, stdin, tty)
14
+ shell = Mixlib::ShellOut.new(instruction)
15
+ shell.run_command
16
+ end
17
+
18
+ private
19
+
20
+ def shell
21
+ @shell ||= Mixlib::ShellOut.new(instruction)
22
+ end
23
+
24
+ def build_instruction(command, stdin, tty)
25
+ ["kubectl exec"].tap do |arr|
26
+ arr << '--stdin' if stdin
27
+ arr << "--tty" if tty
28
+ arr << pod if pod
29
+ arr << command
30
+ end.join("\s")
31
+ end
32
+ end
33
+ end
34
+ end
@@ -5,6 +5,6 @@
5
5
 
6
6
  module TrainPlugins
7
7
  module TrainKubernetes
8
- VERSION = '0.1.4'.freeze
8
+ VERSION = '0.1.7'.freeze
9
9
  end
10
10
  end
@@ -22,6 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.homepage = 'https://github.com/bgeesaman/train-kubernetes'
23
23
  spec.license = 'Apache-2.0'
24
24
 
25
+ spec.required_ruby_version = '>= 2.4'
26
+
25
27
  # Though complicated-looking, this is pretty standard for a gemspec.
26
28
  # It just filters what will actually be packaged in the gem (leaving
27
29
  # out tests, etc)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: train-kubernetes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Geesaman
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-11 00:00:00.000000000 Z
11
+ date: 2022-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: k8s-ruby
@@ -50,6 +50,7 @@ files:
50
50
  - README.md
51
51
  - lib/train-kubernetes.rb
52
52
  - lib/train-kubernetes/connection.rb
53
+ - lib/train-kubernetes/kubectl_client.rb
53
54
  - lib/train-kubernetes/platform.rb
54
55
  - lib/train-kubernetes/transport.rb
55
56
  - lib/train-kubernetes/version.rb
@@ -58,7 +59,7 @@ homepage: https://github.com/bgeesaman/train-kubernetes
58
59
  licenses:
59
60
  - Apache-2.0
60
61
  metadata: {}
61
- post_install_message:
62
+ post_install_message:
62
63
  rdoc_options: []
63
64
  require_paths:
64
65
  - lib
@@ -66,15 +67,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
66
67
  requirements:
67
68
  - - ">="
68
69
  - !ruby/object:Gem::Version
69
- version: '0'
70
+ version: '2.4'
70
71
  required_rubygems_version: !ruby/object:Gem::Requirement
71
72
  requirements:
72
73
  - - ">="
73
74
  - !ruby/object:Gem::Version
74
75
  version: '0'
75
76
  requirements: []
76
- rubygems_version: 3.1.2
77
- signing_key:
77
+ rubygems_version: 3.0.8
78
+ signing_key:
78
79
  specification_version: 4
79
80
  summary: Train Kubernetes
80
81
  test_files: []