Class: KubernetesDeploy::Kubectl
- Inherits:
-
Object
- Object
- KubernetesDeploy::Kubectl
- Defined in:
- lib/kubernetes-deploy/kubectl.rb
Instance Method Summary collapse
- #client_version ⇒ Object
-
#initialize(namespace:, context:, logger:, log_failure_by_default:, default_timeout: '30s', output_is_sensitive: false) ⇒ Kubectl
constructor
A new instance of Kubectl.
- #run(*args, log_failure: nil, use_context: true, use_namespace: true) ⇒ Object
- #server_version ⇒ Object
- #version_info ⇒ Object
Constructor Details
#initialize(namespace:, context:, logger:, log_failure_by_default:, default_timeout: '30s', output_is_sensitive: false) ⇒ Kubectl
Returns a new instance of Kubectl.
5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/kubernetes-deploy/kubectl.rb', line 5 def initialize(namespace:, context:, logger:, log_failure_by_default:, default_timeout: '30s', output_is_sensitive: false) @namespace = namespace @context = context @logger = logger @log_failure_by_default = log_failure_by_default @default_timeout = default_timeout @output_is_sensitive = output_is_sensitive raise ArgumentError, "namespace is required" if namespace.blank? raise ArgumentError, "context is required" if context.blank? end |
Instance Method Details
#client_version ⇒ Object
46 47 48 |
# File 'lib/kubernetes-deploy/kubectl.rb', line 46 def client_version version_info[:client] end |
#run(*args, log_failure: nil, use_context: true, use_namespace: true) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/kubernetes-deploy/kubectl.rb', line 18 def run(*args, log_failure: nil, use_context: true, use_namespace: true) log_failure = @log_failure_by_default if log_failure.nil? args = args.unshift("kubectl") args.push("--namespace=#{@namespace}") if use_namespace args.push("--context=#{@context}") if use_context args.push("--request-timeout=#{@default_timeout}") if @default_timeout @logger.debug Shellwords.join(args) out, err, st = Open3.capture3(*args) @logger.debug(out.shellescape) unless output_is_sensitive? if !st.success? && log_failure @logger.warn("The following command failed: #{Shellwords.join(args)}") @logger.warn(err) unless output_is_sensitive? end [out.chomp, err.chomp, st] end |
#server_version ⇒ Object
50 51 52 |
# File 'lib/kubernetes-deploy/kubectl.rb', line 50 def server_version version_info[:server] end |
#version_info ⇒ Object
37 38 39 40 41 42 43 44 |
# File 'lib/kubernetes-deploy/kubectl.rb', line 37 def version_info @version_info ||= begin response, _, status = run("version", use_namespace: false, log_failure: true) raise KubectlError, "Could not retrieve kubectl version info" unless status.success? extract_version_info_from_kubectl_response(response) end end |