Sha256: f08ba92cfacb28fa0977651110e10a3671d3863029d4473a3cd491c0498c29d7

Contents?: true

Size: 1.45 KB

Versions: 7

Compression:

Stored size: 1.45 KB

Contents

module Hako
  module Schedulers
    class EcsDefinitionComparator
      def initialize(expected_container)
        @expected_container = expected_container
      end

      CONTAINER_KEYS = %i[image cpu memory links docker_labels].freeze
      PORT_MAPPING_KEYS = %i[container_port host_port protocol].freeze
      ENVIRONMENT_KEYS = %i[name value].freeze

      def different?(actual_container)
        unless actual_container
          return true
        end
        if different_members?(@expected_container, actual_container, CONTAINER_KEYS)
          return true
        end
        if @expected_container[:port_mappings].size != actual_container.port_mappings.size
          return true
        end
        @expected_container[:port_mappings].zip(actual_container.port_mappings) do |e, a|
          if different_members?(e, a, PORT_MAPPING_KEYS)
            return true
          end
        end
        if @expected_container[:environment].size != actual_container.environment.size
          return true
        end
        @expected_container[:environment].zip(actual_container.environment) do |e, a|
          if different_members?(e, a, ENVIRONMENT_KEYS)
            return true
          end
        end

        false
      end

      private

      def different_members?(expected, actual, keys)
        keys.each do |key|
          if actual.public_send(key) != expected[key]
            return true
          end
        end
        false
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hako-0.7.0 lib/hako/schedulers/ecs_definition_comparator.rb
hako-0.6.1 lib/hako/schedulers/ecs_definition_comparator.rb
hako-0.6.0 lib/hako/schedulers/ecs_definition_comparator.rb
hako-0.5.1 lib/hako/schedulers/ecs_definition_comparator.rb
hako-0.5.0 lib/hako/schedulers/ecs_definition_comparator.rb
hako-0.4.0 lib/hako/schedulers/ecs_definition_comparator.rb
hako-0.3.1 lib/hako/schedulers/ecs_definition_comparator.rb