From 6edce21166d35f8b7d196fbd23233eb31cf5ade0 Mon Sep 17 00:00:00 2001 From: Daniel Turner Date: Mon, 26 Aug 2019 11:23:22 -0700 Subject: [PATCH] PR feedback --- lib/kubernetes-deploy.rb | 2 +- lib/kubernetes-deploy/deploy_task.rb | 5 ++--- lib/kubernetes-deploy/errors.rb | 8 -------- lib/kubernetes-deploy/restart_task.rb | 10 +++++----- lib/kubernetes-deploy/runner_task.rb | 5 ++--- lib/kubernetes-deploy/task_config.rb | 13 ------------- .../{validator.rb => task_config_validator.rb} | 18 ++++++++++++------ 7 files changed, 22 insertions(+), 39 deletions(-) rename lib/kubernetes-deploy/{validator.rb => task_config_validator.rb} (79%) diff --git a/lib/kubernetes-deploy.rb b/lib/kubernetes-deploy.rb index 24495b622..e9355298d 100644 --- a/lib/kubernetes-deploy.rb +++ b/lib/kubernetes-deploy.rb @@ -24,7 +24,7 @@ require 'kubernetes-deploy/resource_cache' require 'kubernetes-deploy/label_selector' require 'kubernetes-deploy/task_config' -require 'kubernetes-deploy/validator' +require 'kubernetes-deploy/task_config_validator' module KubernetesDeploy MIN_KUBE_VERSION = '1.10.0' diff --git a/lib/kubernetes-deploy/deploy_task.rb b/lib/kubernetes-deploy/deploy_task.rb index 5d39ac5c2..47ad22628 100644 --- a/lib/kubernetes-deploy/deploy_task.rb +++ b/lib/kubernetes-deploy/deploy_task.rb @@ -108,6 +108,7 @@ def server_version def initialize(namespace:, context:, current_sha:, template_dir:, logger:, kubectl_instance: nil, bindings: {}, max_watch_seconds: nil, selector: nil) + @task_config = KubernetesDeploy::TaskConfig.new(context, namespace, logger) @namespace = namespace @namespace_tags = [] @context = context @@ -550,9 +551,7 @@ def confirm_cluster_reachable end end raise FatalDeploymentError, "Failed to reach server for #{@context}" unless success - if kubectl.server_version < Gem::Version.new(MIN_KUBE_VERSION) - @logger.warn(KubernetesDeploy::Errors.server_version_warning(server_version)) - end + TaskConfigValidator.new(@task_config, only: [:validate_server_version]).valid? end def confirm_namespace_exists diff --git a/lib/kubernetes-deploy/errors.rb b/lib/kubernetes-deploy/errors.rb index d70d84e9d..cae3ba3f1 100644 --- a/lib/kubernetes-deploy/errors.rb +++ b/lib/kubernetes-deploy/errors.rb @@ -30,12 +30,4 @@ def initialize "kubernetes-deploy will not continue since it is extremely unlikely that this secret should be pruned.") end end - - module Errors - extend self - def server_version_warning(server_version) - "Minimum cluster version requirement of #{MIN_KUBE_VERSION} not met. "\ - "Using #{server_version} could result in unexpected behavior as it is no longer tested against" - end - end end diff --git a/lib/kubernetes-deploy/restart_task.rb b/lib/kubernetes-deploy/restart_task.rb index 2d3a60bc5..e836635fd 100644 --- a/lib/kubernetes-deploy/restart_task.rb +++ b/lib/kubernetes-deploy/restart_task.rb @@ -38,10 +38,10 @@ def perform!(deployments_names = nil, selector: nil) @logger.reset @logger.phase_heading("Initializing restart") - errors = Validator.new(@task_config).errors - unless errors.empty? + task_config_validator = TaskConfigValidator.new(@task_config) + unless task_config_validator.valid? @logger.summary.add_action("Configuration invalid") - @logger.summary.add_paragraph(errors.map { |err| "- #{err}" }.join("\n")) + @logger.summary.add_paragraph(task_config_validator.errors.map { |err| "- #{err}" }.join("\n")) raise KubernetesDeploy::TaskConfigurationError end @@ -175,7 +175,7 @@ def kubeclient end def kubectl - @task_config.kubectl + @kubectl ||= Kubectl.new(namespace: @namespace, context: @context, logger: @logger, log_failure_by_default: true) end def v1beta1_kubeclient @@ -183,7 +183,7 @@ def v1beta1_kubeclient end def kubeclient_builder - @task_config.kubeclient_builder + @kubeclient_builder ||= KubeclientBuilder.new end end end diff --git a/lib/kubernetes-deploy/runner_task.rb b/lib/kubernetes-deploy/runner_task.rb index 43c23f4fc..a70ed158b 100644 --- a/lib/kubernetes-deploy/runner_task.rb +++ b/lib/kubernetes-deploy/runner_task.rb @@ -11,6 +11,7 @@ class TaskTemplateMissingError < TaskConfigurationError; end attr_reader :pod_name def initialize(namespace:, context:, logger:, max_watch_seconds: nil) + @task_config = KubernetesDeploy::TaskConfig.new(context, namespace, logger) @logger = logger @namespace = namespace @context = context @@ -135,9 +136,7 @@ def validate_configuration(task_template, args) raise TaskConfigurationError, "Configuration invalid: #{errors.join(', ')}" end - if kubectl.server_version < Gem::Version.new(MIN_KUBE_VERSION) - @logger.warn(KubernetesDeploy::Errors.server_version_warning(kubectl.server_version)) - end + TaskConfigValidator.new(@task_config, only: [:validate_server_version]).valid? end def get_template(template_name) diff --git a/lib/kubernetes-deploy/task_config.rb b/lib/kubernetes-deploy/task_config.rb index 7f506f64c..69ba12860 100644 --- a/lib/kubernetes-deploy/task_config.rb +++ b/lib/kubernetes-deploy/task_config.rb @@ -12,18 +12,5 @@ def initialize(context, namespace, logger = nil) def logger @logger ||= KubernetesDeploy::FormattedLogger.build(@namespace, @context) end - - def kubectl(log_failure_by_default: true) - @kubectl ||= Kubectl.new( - namespace: @namespace, - context: @context, - logger: logger, - log_failure_by_default: log_failure_by_default - ) - end - - def kubeclient_builder - @kubeclient ||= KubeclientBuilder.new - end end end diff --git a/lib/kubernetes-deploy/validator.rb b/lib/kubernetes-deploy/task_config_validator.rb similarity index 79% rename from lib/kubernetes-deploy/validator.rb rename to lib/kubernetes-deploy/task_config_validator.rb index dd4e7a02c..da6326c91 100644 --- a/lib/kubernetes-deploy/validator.rb +++ b/lib/kubernetes-deploy/task_config_validator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true module KubernetesDeploy - class Validator + class TaskConfigValidator DEFAULT_VALIDATIONS = %i( validate_kubeconfig validate_context_exists @@ -8,18 +8,19 @@ class Validator validate_server_version ).freeze - delegate :context, :namespace, :logger, :kubectl, :kubeclient_builder, to: :@task_config + delegate :context, :namespace, :logger, to: :@task_config - def initialize(task_config) + def initialize(task_config, only: nil) @task_config = task_config @errors = nil + @validations = only || DEFAULT_VALIDATIONS end def valid? @errors = [] - DEFAULT_VALIDATIONS.each do |validator_name| - send(validator_name) + @validations.each do |validator_name| break if @errors.present? + send(validator_name) end @errors.empty? end @@ -79,8 +80,13 @@ def validate_namespace_exists def validate_server_version if kubectl.server_version < Gem::Version.new(MIN_KUBE_VERSION) - logger.warn(KubernetesDeploy::Errors.server_version_warning(kubectl.server_version)) + logger.warn(server_version_warning(kubectl.server_version)) end end + + def server_version_warning(server_version) + "Minimum cluster version requirement of #{MIN_KUBE_VERSION} not met. "\ + "Using #{server_version} could result in unexpected behavior as it is no longer tested against" + end end end