dapp 0.29.2 → 0.30.0

Sign up to get free protection for your applications and to get access to all the features.
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