dry-stack 0.0.37 → 0.0.38

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dry-stack/stack.rb +21 -14
  3. data/lib/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc52776646d4ad29e848531dddfdd4e7e5134ce143b67a67767a1b72e24fc6d9
4
- data.tar.gz: 4d44aa9270e87628c931e5c4e0ad3ffa8e38332e138875858d880dbd2c0aa49b
3
+ metadata.gz: 552fc69a9e66540b6dda0684697a9f6d61fca3df74237622d7c332bbdff055ef
4
+ data.tar.gz: 47525a271a081a4eb8f0ced2ffed4ef8292e86959efcb45aa0e08aff2a86a4e3
5
5
  SHA512:
6
- metadata.gz: b780119d23b4ceabc1a0694883635bc1284dbd07eb232b619bc30a640c315117676f861374cd57bfecaf95e8582505bb461979415152adad8a0e52aa37eb5160
7
- data.tar.gz: 9eb4cb230bf4643f0a4a05ea0414fa54cdec5709baca838e7679ac05e1166ba7e9cb06f144ea43882fde3ce92164a1b2515beba495795067cee203001bdd9e8f
6
+ metadata.gz: abdc1e2747cfe02adedbaff0c56d5b2ccba4406c4705313b618e1889bd6a47bcba6d0f0cc9b1b0eaaa73fa62f511ab734c1d07c839a8ca9f070c405365783c48
7
+ data.tar.gz: e07c5699910cbaecda40dceab572a693e20bb069526b340d1763549c8354a2b2d7ce82ba294909bff4f2de5b841b09e6d24c62c6b7b656108c5d5c4fbd49a5c6
@@ -91,33 +91,36 @@ module Dry
91
91
  end
92
92
 
93
93
  compose[:services].each do |name, service|
94
- @ingress[name][:port] ||= service[:ports]&.first if @ingress[name]
94
+ ingress = [@ingress[name]].flatten
95
+ ingress[0][:port] ||= service[:ports]&.first if ingress[0]
95
96
  service[:deploy] ||= {}
96
97
  service[:deploy][:labels] ||= []
97
98
  service[:deploy][:labels] += @labels.map { "#{_1}=#{_2}" }
98
99
 
99
- if @ingress[name] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
100
+ if ingress[0] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
100
101
  service[:networks] ||= []
101
102
  service[:networks] << 'default' if service[:networks].empty?
102
103
  service[:networks] << 'ingress_routing'
103
104
  end
104
105
 
105
- if opts[:host_sed] && @ingress.dig(name,:host)
106
- a, b = opts[:host_sed].split('/').reject(&:empty?)
107
- @ingress[name][:host].gsub! %r{#{a}}, b
106
+ ingress.each do |rule|
107
+ if opts[:host_sed] && rule[:host]
108
+ a, b = opts[:host_sed].split('/').reject(&:empty?)
109
+ rule[:host].gsub! %r{#{a}}, b
110
+ end
108
111
  end
109
112
 
110
- if @ingress[name] && opts[:ingress]
111
- service[:deploy][:labels] = @ingress[name]&.map { |k, v| "ingress.#{k}=#{v}" }
113
+ if ingress[0] && opts[:ingress]
114
+ service[:deploy][:labels] = ingress[0]&.map { |k, v| "ingress.#{k}=#{v}" }
112
115
  end
113
116
 
114
117
  service_name = "#{@name}_#{name}"
115
118
 
116
- if @ingress[name] && (opts[:traefik] || opts[:traefik_tls])
119
+ if ingress[0] && (opts[:traefik] || opts[:traefik_tls])
117
120
  service[:deploy][:labels] += [
118
121
  'traefik.enable=true',
119
122
  "traefik.http.routers.#{service_name}.service=#{service_name}",
120
- "traefik.http.services.#{service_name}.loadbalancer.server.port=#{@ingress[name][:port]}",
123
+ "traefik.http.services.#{service_name}.loadbalancer.server.port=#{ingress[0][:port]}"
121
124
  ]
122
125
 
123
126
  if opts[:traefik_tls]
@@ -131,11 +134,15 @@ module Dry
131
134
  ]
132
135
  end
133
136
 
134
- rule = []
135
- rule << "HostRegexp(`{name:#{nginx_host2regexp @ingress[name][:host]}}`)" if @ingress[name][:host]
136
- rule << "PathPrefix(`#{nginx_host2regexp @ingress[name][:path]}`)" if @ingress[name][:path]
137
- rule << "#{@ingress[name][:rule]}" if @ingress[name][:rule]
138
- service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=#{rule.join ' && '}"
137
+ rule_group = ingress.map do|r|
138
+ rule = []
139
+ rule << "HostRegexp(`{name:#{nginx_host2regexp r[:host]}}`)" if r[:host]
140
+ rule << "PathPrefix(`#{nginx_host2regexp r[:path]}`)" if r[:path]
141
+ rule << "#{r[:rule]}" if r[:rule]
142
+ rule.join ' && '
143
+ end
144
+ rule = rule_group.size > 1 ? rule_group.map{"(#{_1})"}.join(' || ') : rule_group[0]
145
+ service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=#{rule}"
139
146
  end
140
147
 
141
148
  hash = {'service-name': service_name}
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.37'
3
+ VERSION = '0.0.38'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.37
4
+ version: 0.0.38
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-25 00:00:00.000000000 Z
11
+ date: 2023-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake