dry-stack 0.0.12 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b042eab1b6fa003ac8c4f3f92bded92fba4949bd664eb33c3632fe9b21cff3d
4
- data.tar.gz: 9fcf393c3e78ae50995276375e4d827c00576aa5d5f0f5aff3f31694d32f81a9
3
+ metadata.gz: d5f21e65df1e5cdb3f6fc7d28dd4c4f3e9c66db5de746af952d0353da1ecc4cb
4
+ data.tar.gz: 1cad2e0cf7cf1def43213d490173445db4df8036332b4ded90fd6095a552d8f3
5
5
  SHA512:
6
- metadata.gz: c3df1ae9f302a552c5e681f0b8ffd0efe1edfad71433e63c7552984381ad11dffb72ccd6dae3f7d9f6bbcfdbdb211ada225278d364d2d365ee8d1df024065e43
7
- data.tar.gz: 9b6a4964c7345421e135e75f33969bcac512452d2ef9ae271e1850111d0ce30ea1f43d9f8aa05d277797285a852162f6f8f21bb34938c1858e70f38e3b1435f0
6
+ metadata.gz: 68640915ff636f73f85a5d3cf4be792aeaa541b3887c8b8da996d640193c49c839997639fe22f1bfc2d7b25c99cd41a479983ebed555a834480ad36fab4eb63c
7
+ data.tar.gz: cb262611e2c731eb9af706f267e2b40d7253ee070a774353ae89b956a330d4451525acb7196dc8e70f89443bfdb214bf76d1d485ae7f780a30f9f32f21995033
data/bin/stack2.drs CHANGED
@@ -1,5 +1,6 @@
1
1
  PublishPorts reports: 7000
2
2
  Ingress reports: {host: 'reports.*', protocol: :http, port: 7000}
3
+ Deploy admin: { replica: 2, 'resources.limits': { cpus: 4, memory: '500M' } }
3
4
 
4
5
  Service :admin, image: '$REGISTRY_HOST/frontend', env: { APP: 'admin' }, ports: 5000
5
6
  Service :reports, image: '$REGISTRY_HOST/reports', env: { DB_URL: '$DB_URL' }
@@ -33,9 +33,22 @@ module Dry
33
33
  @networks = {}
34
34
  @publish_ports = {}
35
35
  @ingress = {}
36
+ @deploy = {}
36
37
  end
37
38
 
38
39
  def stringify(hash) = hash.to_h { |k, v| [k.to_s, v.is_a?(Hash) ? stringify(v) : v] }
40
+ def expand_hash(hash)
41
+ hash.select { _1.to_s =~ /\./ }.each do |k, v|
42
+ name = k.to_s.scan(/([^\.]*)\.(.*)/).flatten
43
+ hash.delete k
44
+ hash[name[0]] ||= {}
45
+ hash[name[0]][name[1]] ||= {}
46
+ hash[name[0]][name[1]].merge! v if v.is_a?(Hash)
47
+ hash[name[0]][name[1]] = v unless v.is_a?(Hash)
48
+ end
49
+ hash.each { expand_hash(_2) if _2.is_a?(Hash) }
50
+ hash
51
+ end
39
52
 
40
53
  def nginx_host2regexp(str)
41
54
  str.to_s.gsub('.', '\.').gsub('*', '.*')
@@ -78,6 +91,8 @@ module Dry
78
91
  ]
79
92
  end
80
93
 
94
+ service[:deploy].merge! @deploy[name] if @deploy[name]
95
+
81
96
  service[:ports] = @publish_ports[name]&.zip(service[:ports] || @publish_ports[name])&.map { _1.join ':' }
82
97
  end
83
98
 
@@ -110,6 +125,10 @@ module Dry
110
125
  @ingress.merge! services
111
126
  end
112
127
 
128
+ def Deploy(services)
129
+ @deploy.merge! expand_hash(services)
130
+ end
131
+
113
132
  def Network(name, opts = {})
114
133
  @networks[name] ||= {}
115
134
  @networks[name].merge! opts
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.12'
3
+ VERSION = '0.0.13'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artyom B