dapp 0.29.2 → 0.30.0

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.
Files changed (63) hide show
  1. checksums.yaml +5 -5
  2. data/bin/dapp +1 -23
  3. data/config/en/net_status.yml +5 -4
  4. data/lib/dapp.rb +1 -1
  5. data/lib/dapp/dapp/sentry.rb +11 -8
  6. data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +33 -21
  7. data/lib/dapp/dimg/dimg/git_artifact.rb +2 -5
  8. data/lib/dapp/dimg/git_artifact.rb +41 -23
  9. data/lib/dapp/dimg/git_repo/base.rb +19 -39
  10. data/lib/dapp/dimg/git_repo/local.rb +15 -14
  11. data/lib/dapp/dimg/git_repo/remote.rb +32 -19
  12. data/lib/dapp/kube/cli/command/kube/deploy.rb +4 -0
  13. data/lib/dapp/kube/cli/command/kube/dismiss.rb +4 -0
  14. data/lib/dapp/kube/cli/command/kube/lint.rb +4 -0
  15. data/lib/dapp/kube/cli/command/kube/render.rb +4 -0
  16. data/lib/dapp/kube/cli/command/kube/value_get.rb +4 -0
  17. data/lib/dapp/kube/dapp/command/common.rb +21 -18
  18. data/lib/dapp/kube/dapp/command/minikube_setup.rb +6 -2
  19. data/lib/dapp/kube/helm/release.rb +1 -1
  20. data/lib/dapp/kube/helm/values.rb +3 -3
  21. data/lib/dapp/kube/kubernetes/client.rb +21 -90
  22. data/lib/dapp/kube/kubernetes/config.rb +129 -0
  23. data/lib/dapp/version.rb +1 -1
  24. metadata +6 -44
  25. data/lib/dapp/deployment/app.rb +0 -120
  26. data/lib/dapp/deployment/cli/cli.rb +0 -1
  27. data/lib/dapp/deployment/cli/command/base.rb +0 -14
  28. data/lib/dapp/deployment/cli/command/deployment.rb +0 -18
  29. data/lib/dapp/deployment/cli/command/deployment/apply.rb +0 -26
  30. data/lib/dapp/deployment/cli/command/deployment/mrproper.rb +0 -13
  31. data/lib/dapp/deployment/config/config.rb +0 -46
  32. data/lib/dapp/deployment/config/directive/app.rb +0 -28
  33. data/lib/dapp/deployment/config/directive/app/instance_methods.rb +0 -51
  34. data/lib/dapp/deployment/config/directive/base.rb +0 -13
  35. data/lib/dapp/deployment/config/directive/deployment.rb +0 -11
  36. data/lib/dapp/deployment/config/directive/expose.rb +0 -68
  37. data/lib/dapp/deployment/config/directive/group.rb +0 -27
  38. data/lib/dapp/deployment/config/directive/job.rb +0 -28
  39. data/lib/dapp/deployment/config/directive/mod/group.rb +0 -22
  40. data/lib/dapp/deployment/config/directive/mod/jobs.rb +0 -26
  41. data/lib/dapp/deployment/config/directive/namespace.rb +0 -26
  42. data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +0 -37
  43. data/lib/dapp/deployment/core_ext/hash.rb +0 -19
  44. data/lib/dapp/deployment/dapp/command/apply.rb +0 -71
  45. data/lib/dapp/deployment/dapp/command/common.rb +0 -17
  46. data/lib/dapp/deployment/dapp/command/mrproper.rb +0 -12
  47. data/lib/dapp/deployment/dapp/dapp.rb +0 -15
  48. data/lib/dapp/deployment/dapp/dappfile.rb +0 -23
  49. data/lib/dapp/deployment/deployment.rb +0 -46
  50. data/lib/dapp/deployment/error/app.rb +0 -7
  51. data/lib/dapp/deployment/error/default.rb +0 -7
  52. data/lib/dapp/deployment/error/deployment.rb +0 -7
  53. data/lib/dapp/deployment/error/kubernetes.rb +0 -7
  54. data/lib/dapp/deployment/kube_app.rb +0 -146
  55. data/lib/dapp/deployment/kube_base.rb +0 -97
  56. data/lib/dapp/deployment/kube_deployment.rb +0 -51
  57. data/lib/dapp/deployment/kubernetes.rb +0 -174
  58. data/lib/dapp/deployment/kubernetes/error.rb +0 -20
  59. data/lib/dapp/deployment/mod/jobs.rb +0 -37
  60. data/lib/dapp/deployment/mod/namespace.rb +0 -58
  61. data/lib/dapp/deployment/mod/system_environments.rb +0 -30
  62. data/lib/dapp/deployment/secret.rb +0 -93
  63. data/lib/dapp/kube/error/kubernetes.rb +0 -7
@@ -1,20 +0,0 @@
1
- module Dapp
2
- module Deployment
3
- module Kubernetes::Error
4
- class Default < ::Dapp::Deployment::Error::Kubernetes
5
- def initialize(**net_status)
6
- super(**net_status, context: :kubernetes)
7
- end
8
- end
9
-
10
- class NotFound < Default
11
- def initialize(**net_status)
12
- super({code: :not_found}.merge(net_status))
13
- end
14
- end
15
-
16
- class Timeout < Default; end
17
- class ConnectionRefused < Default; end
18
- end
19
- end
20
- end
@@ -1,37 +0,0 @@
1
- module Dapp
2
- module Deployment
3
- module Mod
4
- module Jobs
5
- [:bootstrap, :before_apply_job].each do |job|
6
- define_method :"to_kube_#{job}_pods" do |repo, image_version|
7
- to_kube_default_job_pods(job, repo, image_version)
8
- end
9
- end
10
-
11
- def to_kube_default_job_pods(directive, repo, image_version)
12
- return {} if (directive_config = config.public_send("_#{directive}")).empty?
13
- {}.tap do |hash|
14
- hash[name(directive)] = {}.tap do |pod|
15
- pod['metadata'] = {}.tap do |metadata|
16
- metadata['name'] = name(directive)
17
- metadata['labels'] = kube.labels
18
- end
19
- pod['spec'] = {}.tap do |spec|
20
- spec['restartPolicy'] = 'Never'
21
- spec['containers'] = [].tap do |containers|
22
- containers << {}.tap do |container|
23
- container['imagePullPolicy'] = 'Always'
24
- container['image'] = [repo, [directive_config._dimg || config._dimg, image_version].compact.join('-')].join(':')
25
- container['name'] = name(directive)
26
- container['command'] = directive_config._run unless directive_config._run.empty?
27
- container['env'] = environments unless environments.empty?
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
@@ -1,58 +0,0 @@
1
- module Dapp
2
- module Deployment
3
- module Mod
4
- module Namespace
5
- def environment
6
- config._environment
7
- .merge(namespace_config_directive(:_environment) || {})
8
- .merge(system_environments)
9
- end
10
-
11
- def secret_environment
12
- return {} if secret.nil?
13
- config._secret_environment
14
- .merge(namespace_config_directive(:_secret_environment) || {})
15
- .each_with_object({}) { |(k, v), environments| environments[k] = secret.extract(v) }
16
- end
17
-
18
- def environments
19
- [environment, secret_environment]
20
- .select { |env| !env.empty? }
21
- .map { |h| h.map { |k, v| { 'name' => k.to_s, 'value' => v.to_s } } }
22
- .flatten
23
- end
24
-
25
- def scale
26
- namespace_config_directive(:_scale) || config._scale || 1
27
- end
28
-
29
- def namespace_config_directive(name)
30
- return if namespace_config.nil?
31
- namespace_config.send(name)
32
- end
33
-
34
- def namespace_config
35
- @namespace_config = begin
36
- error_class = Error.const_get(self.class.name.to_s.split('::').last)
37
- if config._namespace.include?(namespace)
38
- config._namespace[namespace]
39
- elsif namespace.nil? || namespace == 'default'
40
- if config._namespace.one?
41
- config._namespace.values.first
42
- elsif config._namespace.empty?
43
- else
44
- if namespace.nil?
45
- raise error_class, code: :namespace_not_defined, data: { name: name }
46
- else
47
- raise error_class, code: :namespace_not_found, data: { namespace: namespace, name: name }
48
- end
49
- end
50
- else
51
- raise error_class, code: :namespace_not_found, data: { namespace: namespace, name: name }
52
- end
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,30 +0,0 @@
1
- module Dapp
2
- module Deployment
3
- module Mod
4
- module SystemEnvironments
5
- protected
6
-
7
- def system_environments
8
- @system_environments ||= begin
9
- [namespace_system_env_name_prefix, system_env_name_prefix].each_with_object({}) do |prefix, environments|
10
- ENV.map do |k, v|
11
- if k.start_with?(prefix)
12
- key = k.sub(prefix, '')
13
- environments[key] = v unless environments.key?(key)
14
- end
15
- end
16
- end
17
- end
18
- end
19
-
20
- def namespace_system_env_name_prefix
21
- [system_env_name_prefix, namespace.to_s.tr('-', '_').upcase].join('_')
22
- end
23
-
24
- def system_env_name_prefix
25
- 'DAPP_DEPLOYMENT'
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,93 +0,0 @@
1
- module Dapp
2
- module Deployment
3
- class Secret
4
- attr_reader :key
5
-
6
- def initialize(key)
7
- self.class._validate_key!(key)
8
- @key = key
9
- end
10
-
11
- def generate(value)
12
- cipher = self.class._openssl_cipher
13
- cipher.encrypt
14
- cipher.key = self.class._hex_to_binary key
15
- iv = cipher.random_iv
16
-
17
- iv_size_prefix = [iv.bytesize].pack('S')
18
- encrypted = cipher.update(value.to_s) + cipher.final
19
-
20
- self.class._binary_to_hex "#{iv_size_prefix}#{iv}#{encrypted}"
21
- end
22
-
23
- def extract(hexdata)
24
- data = self.class._hex_to_binary hexdata.to_s
25
-
26
- iv_size = data.unpack('S').first
27
- data = data.byteslice(2..-1)
28
- raise ExtractionError, code: :bad_data, data: {data: hexdata} unless data
29
-
30
- iv = data.byteslice(0, iv_size)
31
- data = data.byteslice(iv_size..-1)
32
- raise ExtractionError, code: :bad_data, data: {data: hexdata} unless data
33
-
34
- decipher = self.class._openssl_cipher
35
- decipher.decrypt
36
- decipher.key = self.class._hex_to_binary(key)
37
-
38
- begin
39
- decipher.iv = iv
40
- rescue OpenSSL::Cipher::CipherError
41
- raise ExtractionError, code: :bad_data, data: {data: hexdata}
42
- end
43
-
44
- begin
45
- value = decipher.update(data) + decipher.final
46
- rescue OpenSSL::Cipher::CipherError
47
- raise ExtractionError, code: :bad_data, data: {data: hexdata}
48
- end
49
- value.force_encoding('utf-8')
50
- end
51
-
52
- class << self
53
- def generate_key
54
- _binary_to_hex _openssl_cipher.random_key
55
- end
56
-
57
- def _openssl_cipher
58
- OpenSSL::Cipher::AES.new(128, :CBC)
59
- end
60
-
61
- def _hex_to_binary(key)
62
- [key].pack('H*')
63
- end
64
-
65
- def _binary_to_hex(key)
66
- key.unpack('H*').first
67
- end
68
-
69
- def _validate_key!(key)
70
- # Требуется 128 битный ключ — это 16 байт.
71
- # Ключ закодирован в hex кодировке для пользователя.
72
- # 2 hex символа на 1 байт в hex кодировке.
73
- # Поэтому требуется длина ключа в hex кодировке в 32 символа.
74
- if key.bytesize < 32
75
- raise InvalidKeyError, code: :key_length_too_short, data: {required_size: 32}
76
- end
77
- end
78
- end
79
-
80
- class Error < ::Dapp::Deployment::Error::Default
81
- def initialize(**net_status)
82
- super(net_status.merge(context: :secret))
83
- end
84
- end
85
-
86
- class InvalidKeyError < Error
87
- end
88
-
89
- class ExtractionError < Error
90
- end
91
- end
92
- end
93
- end
@@ -1,7 +0,0 @@
1
- module Dapp
2
- module Kube
3
- module Error
4
- class Kubernetes < Default; end
5
- end
6
- end
7
- end