Class: KuberKit::ServiceDeployer::ServiceListResolver
- Defined in:
- lib/kuber_kit/service_deployer/service_list_resolver.rb
Instance Method Summary collapse
- #matches_any?(names, patterns) ⇒ Boolean
- #matches_name?(name, pattern) ⇒ Boolean
- #resolve(services: [], tags: []) ⇒ Object
- #split_by_inclusion(array) ⇒ Object
Instance Method Details
#matches_any?(names, patterns) ⇒ Boolean
51 52 53 54 55 |
# File 'lib/kuber_kit/service_deployer/service_list_resolver.rb', line 51 def matches_any?(names, patterns) patterns.any? do |pattern| names.any? { |name| matches_name?(name, pattern) } end end |
#matches_name?(name, pattern) ⇒ Boolean
45 46 47 48 |
# File 'lib/kuber_kit/service_deployer/service_list_resolver.rb', line 45 def matches_name?(name, pattern) regexp = Regexp.new("\\A" + pattern.gsub("*", "[a-z\_0-9]+") + "\\z") name.match?(regexp) end |
#resolve(services: [], tags: []) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/kuber_kit/service_deployer/service_list_resolver.rb', line 10 def resolve(services: [], tags: []) all_definitions = service_store.all_definitions.values included_services, excluded_services = split_by_inclusion(services) , = split_by_inclusion() included_definitions = all_definitions.select do |definition| service_name = definition.service_name.to_s = definition.to_service_attrs..map(&:to_s) matches_any?([service_name], included_services) || matches_any?(, ) end included_definitions = included_definitions.reject do |definition| service_name = definition.service_name.to_s = definition.to_service_attrs..map(&:to_s) matches_any?([service_name], excluded_services) || matches_any?(, ) end included_definitions.map(&:service_name).map(&:to_s) end |
#split_by_inclusion(array) ⇒ Object
36 37 38 39 40 41 42 |
# File 'lib/kuber_kit/service_deployer/service_list_resolver.rb', line 36 def split_by_inclusion(array) excluded, included = array.partition{|e| e.start_with?('-') } excluded.map!{ |item| item.gsub(/^\-/, "") } [included, excluded] end |