dapp 0.11.0 → 0.12.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 (154) hide show
  1. checksums.yaml +4 -4
  2. data/config/en/net_status.yml +36 -4
  3. data/lib/dapp.rb +84 -36
  4. data/lib/dapp/cli.rb +3 -2
  5. data/lib/dapp/cli/command/base.rb +69 -0
  6. data/lib/dapp/config/config.rb +17 -0
  7. data/lib/dapp/config/directive/base.rb +90 -3
  8. data/lib/dapp/dapp.rb +6 -14
  9. data/lib/dapp/dapp/dappfile.rb +20 -27
  10. data/lib/dapp/dapp/deps/base.rb +2 -2
  11. data/lib/dapp/dapp/lock.rb +1 -1
  12. data/lib/dapp/dapp/logging/base.rb +11 -7
  13. data/lib/dapp/dapp/logging/process.rb +4 -2
  14. data/lib/dapp/dapp/shellout/base.rb +2 -2
  15. data/lib/dapp/dapp/ssh_agent.rb +2 -2
  16. data/lib/dapp/deployment.rb +1 -0
  17. data/lib/dapp/deployment/app.rb +120 -0
  18. data/lib/dapp/deployment/cli/cli.rb +1 -0
  19. data/lib/dapp/deployment/cli/command/base.rb +14 -0
  20. data/lib/dapp/deployment/cli/command/deployment.rb +21 -0
  21. data/lib/dapp/deployment/cli/command/deployment/apply.rb +26 -0
  22. data/lib/dapp/deployment/cli/command/deployment/minikube_setup.rb +13 -0
  23. data/lib/dapp/deployment/cli/command/deployment/mrproper.rb +13 -0
  24. data/lib/dapp/deployment/cli/command/deployment/secret_generate.rb +13 -0
  25. data/lib/dapp/deployment/cli/command/deployment/secret_key_generate.rb +13 -0
  26. data/lib/dapp/deployment/config/config.rb +46 -0
  27. data/lib/dapp/deployment/config/directive/app.rb +28 -0
  28. data/lib/dapp/deployment/config/directive/app/instance_methods.rb +51 -0
  29. data/lib/dapp/deployment/config/directive/base.rb +13 -0
  30. data/lib/dapp/deployment/config/directive/deployment.rb +11 -0
  31. data/lib/dapp/deployment/config/directive/expose.rb +68 -0
  32. data/lib/dapp/deployment/config/directive/group.rb +27 -0
  33. data/lib/dapp/deployment/config/directive/job.rb +28 -0
  34. data/lib/dapp/deployment/config/directive/mod/group.rb +22 -0
  35. data/lib/dapp/deployment/config/directive/mod/jobs.rb +26 -0
  36. data/lib/dapp/deployment/config/directive/namespace.rb +26 -0
  37. data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +37 -0
  38. data/lib/dapp/deployment/core_ext/hash.rb +19 -0
  39. data/lib/dapp/deployment/dapp/command/apply.rb +83 -0
  40. data/lib/dapp/deployment/dapp/command/common.rb +17 -0
  41. data/lib/dapp/deployment/dapp/command/minikube_setup.rb +393 -0
  42. data/lib/dapp/deployment/dapp/command/mrproper.rb +12 -0
  43. data/lib/dapp/deployment/dapp/command/secret_generate.rb +17 -0
  44. data/lib/dapp/deployment/dapp/command/secret_key_generate.rb +13 -0
  45. data/lib/dapp/deployment/dapp/dapp.rb +18 -0
  46. data/lib/dapp/deployment/dapp/dappfile.rb +23 -0
  47. data/lib/dapp/deployment/deployment.rb +46 -0
  48. data/lib/dapp/deployment/error/app.rb +7 -0
  49. data/lib/dapp/deployment/error/base.rb +7 -0
  50. data/lib/dapp/deployment/error/command.rb +7 -0
  51. data/lib/dapp/deployment/error/config.rb +7 -0
  52. data/lib/dapp/deployment/error/deployment.rb +7 -0
  53. data/lib/dapp/deployment/error/kubernetes.rb +7 -0
  54. data/lib/dapp/deployment/kube_app.rb +277 -0
  55. data/lib/dapp/deployment/kube_base.rb +97 -0
  56. data/lib/dapp/deployment/kube_deployment.rb +51 -0
  57. data/lib/dapp/deployment/kubernetes.rb +174 -0
  58. data/lib/dapp/deployment/kubernetes/error.rb +20 -0
  59. data/lib/dapp/deployment/mod/jobs.rb +37 -0
  60. data/lib/dapp/deployment/mod/namespace.rb +58 -0
  61. data/lib/dapp/deployment/mod/system_environments.rb +30 -0
  62. data/lib/dapp/deployment/secret.rb +93 -0
  63. data/lib/dapp/dimg/artifact.rb +1 -1
  64. data/lib/dapp/dimg/build/stage/artifact_default.rb +35 -23
  65. data/lib/dapp/dimg/build/stage/base.rb +1 -1
  66. data/lib/dapp/dimg/build/stage/before_setup.rb +0 -2
  67. data/lib/dapp/dimg/build/stage/build_artifact.rb +0 -2
  68. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +2 -2
  69. data/lib/dapp/dimg/build/stage/install/install.rb +0 -1
  70. data/lib/dapp/dimg/build/stage/setup/setup.rb +0 -1
  71. data/lib/dapp/dimg/cli/cli.rb +1 -1
  72. data/lib/dapp/dimg/cli/command/base.rb +14 -0
  73. data/lib/dapp/dimg/cli/{dimg.rb → command/dimg.rb} +5 -7
  74. data/lib/dapp/dimg/cli/{bp.rb → command/dimg/bp.rb} +3 -3
  75. data/lib/dapp/dimg/cli/{build.rb → command/dimg/build.rb} +3 -3
  76. data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +3 -3
  77. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +4 -4
  78. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
  79. data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +3 -3
  80. data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +3 -3
  81. data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
  82. data/lib/dapp/dimg/cli/{push.rb → command/dimg/push.rb} +5 -5
  83. data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +8 -8
  84. data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
  85. data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +3 -3
  86. data/lib/dapp/dimg/cli/{stages.rb → command/dimg/stages.rb} +3 -3
  87. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +6 -6
  88. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +5 -5
  89. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_local.rb +5 -5
  90. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_repo.rb +6 -6
  91. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/pull.rb +6 -6
  92. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/push.rb +6 -6
  93. data/lib/dapp/dimg/cli/{tag.rb → command/dimg/tag.rb} +6 -6
  94. data/lib/dapp/dimg/config/config.rb +20 -0
  95. data/lib/dapp/dimg/config/directive/artifact_dimg.rb +19 -0
  96. data/lib/dapp/dimg/config/directive/artifact_group.rb +45 -0
  97. data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
  98. data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +149 -0
  99. data/lib/dapp/dimg/config/directive/dimg/validation.rb +128 -0
  100. data/lib/dapp/dimg/config/directive/dimg_group.rb +64 -0
  101. data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
  102. data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
  103. data/lib/dapp/dimg/config/directive/shell/dimg.rb +1 -1
  104. data/lib/dapp/dimg/dapp/command/bp.rb +4 -4
  105. data/lib/dapp/dimg/dapp/command/build.rb +2 -2
  106. data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
  107. data/lib/dapp/dimg/dapp/command/build_context/export.rb +1 -1
  108. data/lib/dapp/dimg/dapp/command/build_context/import.rb +1 -1
  109. data/lib/dapp/dimg/dapp/command/cleanup.rb +1 -1
  110. data/lib/dapp/dimg/dapp/command/common.rb +19 -4
  111. data/lib/dapp/dimg/dapp/command/list.rb +1 -1
  112. data/lib/dapp/dimg/dapp/command/mrproper.rb +3 -3
  113. data/lib/dapp/dimg/dapp/command/push.rb +6 -5
  114. data/lib/dapp/dimg/dapp/command/run.rb +1 -1
  115. data/lib/dapp/dimg/dapp/command/spush.rb +4 -3
  116. data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
  117. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +1 -1
  118. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +3 -3
  119. data/lib/dapp/dimg/dapp/command/stages/common.rb +4 -4
  120. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +1 -1
  121. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +1 -1
  122. data/lib/dapp/dimg/dapp/command/stages/pull.rb +5 -4
  123. data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -3
  124. data/lib/dapp/dimg/dapp/command/tag.rb +3 -2
  125. data/lib/dapp/dimg/dapp/dapp.rb +33 -0
  126. data/lib/dapp/dimg/dapp/dappfile.rb +25 -0
  127. data/lib/dapp/dimg/dimg.rb +3 -3
  128. data/lib/dapp/dimg/dimg/path.rb +1 -1
  129. data/lib/dapp/dimg/dimg/stages.rb +1 -1
  130. data/lib/dapp/dimg/dimg/tags.rb +5 -5
  131. data/lib/dapp/dimg/docker_registry.rb +3 -7
  132. data/lib/dapp/dimg/git_artifact.rb +30 -14
  133. data/lib/dapp/dimg/git_repo/base.rb +13 -1
  134. data/lib/dapp/dimg/git_repo/own.rb +9 -1
  135. data/lib/dapp/dimg/image/docker.rb +9 -3
  136. data/lib/dapp/helper/cli.rb +3 -1
  137. data/lib/dapp/helper/net_status.rb +5 -1
  138. data/lib/dapp/helper/trivia.rb +1 -1
  139. data/lib/dapp/version.rb +2 -2
  140. metadata +84 -38
  141. data/lib/dapp/cli/base.rb +0 -63
  142. data/lib/dapp/config/base.rb +0 -54
  143. data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
  144. data/lib/dapp/dimg/cli/base.rb +0 -16
  145. data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
  146. data/lib/dapp/dimg/config/artifact_group.rb +0 -43
  147. data/lib/dapp/dimg/config/base.rb +0 -7
  148. data/lib/dapp/dimg/config/dimg.rb +0 -24
  149. data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
  150. data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
  151. data/lib/dapp/dimg/config/dimg_group.rb +0 -61
  152. data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
  153. data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
  154. data/lib/dapp/dimg/dapp/command.rb +0 -21
@@ -19,15 +19,11 @@ module Dapp
19
19
 
20
20
  include Shellout::Base
21
21
 
22
- attr_reader :cli_options
23
- attr_reader :dimgs_patterns
22
+ attr_reader :options
24
23
 
25
- def initialize(cli_options: {}, dimgs_patterns: nil)
26
- @cli_options = cli_options
27
- @dimgs_patterns = dimgs_patterns || []
28
- @dimgs_patterns << '*' unless @dimgs_patterns.any?
29
-
30
- Logging::Paint.initialize(cli_options[:log_color])
24
+ def initialize(options: {})
25
+ @options = options
26
+ Logging::Paint.initialize(options[:log_color])
31
27
  Logging::I18n.initialize
32
28
  end
33
29
 
@@ -68,8 +64,8 @@ module Dapp
68
64
 
69
65
  def build_path
70
66
  @build_path ||= begin
71
- if cli_options[:build_dir]
72
- Pathname.new(cli_options[:build_dir])
67
+ if options[:build_dir]
68
+ Pathname.new(options[:build_dir])
73
69
  else
74
70
  Pathname.new(path).join('.dapp_build')
75
71
  end.expand_path.tap(&:mkpath)
@@ -92,9 +88,5 @@ module Dapp
92
88
  def stage_dapp_label
93
89
  name
94
90
  end
95
-
96
- def dev_mode?
97
- !!cli_options[:dev]
98
- end
99
91
  end # Dapp
100
92
  end # Dapp
@@ -9,21 +9,13 @@ module Dapp
9
9
  end
10
10
  end
11
11
 
12
- def build_configs
13
- @configs ||= begin
14
- dimgs(dappfile_path).flatten.tap do |dimgs|
15
- raise Error::Dapp, code: :no_such_dimg, data: { dimgs_patterns: dimgs_patterns.join(', ') } if dimgs.empty?
16
- end
17
- end
18
- end
19
-
20
12
  def dappfile_path
21
13
  raise Error::Dapp, code: :dappfile_not_found unless (dappfile_path = search_file_upward('Dappfile'))
22
14
  dappfile_path
23
15
  end
24
16
 
25
17
  def work_dir
26
- File.expand_path(cli_options[:dir] || Dir.pwd)
18
+ File.expand_path(options[:dir] || Dir.pwd)
27
19
  end
28
20
 
29
21
  def expand_path(path, number = 1)
@@ -32,27 +24,28 @@ module Dapp
32
24
  path
33
25
  end
34
26
 
35
- def dimgs(dappfile_path)
36
- Dimg::Config::DimgGroupMain.new(dapp: self) do |conf|
37
- begin
38
- conf.instance_eval File.read(dappfile_path), dappfile_path
39
- rescue SyntaxError, StandardError => e
40
- backtrace = e.backtrace.find { |line| line.start_with?(dappfile_path) }
41
- message = begin
42
- case e
43
- when NoMethodError
44
- e.message =~ /`.*'/
45
- "undefined method #{Regexp.last_match}"
46
- when NameError then e.message[/.*(?= for)/]
47
- else
48
- e.message
27
+ def config
28
+ @config ||= begin
29
+ ::Dapp::Config::Config.new(dapp: self).tap do |config|
30
+ begin
31
+ config.instance_eval File.read(dappfile_path), dappfile_path
32
+ config.validate!
33
+ rescue SyntaxError, StandardError => e
34
+ backtrace = e.backtrace.find { |line| line.start_with?(dappfile_path) }
35
+ message = begin
36
+ case e
37
+ when NoMethodError
38
+ e.message =~ /`.*'/
39
+ "undefined method #{Regexp.last_match}"
40
+ when NameError then e.message[/.*(?= for)/]
41
+ else
42
+ e.message
43
+ end
49
44
  end
45
+ message = "#{backtrace[/.*(?=:in)/]}: #{message}" if backtrace
46
+ raise Error::Dappfile, code: :incorrect, data: { error: e.class.name, message: message }
50
47
  end
51
- message = "#{backtrace[/.*(?=:in)/]}: #{message}" if backtrace
52
- raise Error::Dappfile, code: :incorrect, data: { error: e.class.name, message: message }
53
48
  end
54
- end._dimg.select { |dimg| dimgs_patterns.any? { |pattern| dimg._name.nil? || File.fnmatch(pattern, dimg._name) } }.tap do |dimgs|
55
- dimgs.each { |dimg| dimg.send(:validate!) }
56
49
  end
57
50
  end
58
51
  end # Dappfile
@@ -24,8 +24,8 @@ module Dapp
24
24
  end
25
25
 
26
26
  %w(rm rsync diff date cat
27
- stat test sleep mkdir find
28
- install sed cp true
27
+ stat readlink test sleep mkdir
28
+ install sed cp true find
29
29
  bash tar sudo).each do |cmd|
30
30
  define_method("#{cmd}_bin") { "/.dapp/deps/base/#{BASE_VERSION}/bin/#{cmd}" }
31
31
  end
@@ -14,7 +14,7 @@ module Dapp
14
14
  if dry_run?
15
15
  yield if block_given?
16
16
  else
17
- timeout = cli_options[:lock_timeout] || default_timeout
17
+ timeout = options[:lock_timeout] || default_timeout
18
18
  _lock(name).synchronize(
19
19
  timeout: timeout,
20
20
  on_wait: proc do |&do_wait|
@@ -3,31 +3,35 @@ module Dapp
3
3
  module Logging
4
4
  module Base
5
5
  def log_quiet?
6
- cli_options[:log_quiet]
6
+ options[:log_quiet]
7
7
  end
8
8
 
9
9
  def log_time?
10
- cli_options[:log_time]
10
+ options[:log_time]
11
11
  end
12
12
 
13
13
  def log_verbose?
14
- cli_options[:log_verbose]
14
+ options[:log_verbose]
15
15
  end
16
16
 
17
17
  def ignore_config_warning?
18
- cli_options[:ignore_config_warning]
18
+ options[:ignore_config_warning]
19
19
  end
20
20
 
21
21
  def introspect_error?
22
- cli_options[:introspect_error]
22
+ options[:introspect_error]
23
23
  end
24
24
 
25
25
  def introspect_before_error?
26
- cli_options[:introspect_before_error]
26
+ options[:introspect_before_error]
27
27
  end
28
28
 
29
29
  def dry_run?
30
- cli_options[:dry_run]
30
+ options[:dry_run]
31
+ end
32
+
33
+ def dev_mode?
34
+ options[:dev].nil? ? config._dev_mode : options[:dev]
31
35
  end
32
36
 
33
37
  def log_info(*args, **kwargs)
@@ -25,7 +25,7 @@ module Dapp
25
25
  end
26
26
 
27
27
  # rubocop:disable Metrics/ParameterLists
28
- def log_process(message, process: nil, short: false, quiet: false, style: {}, status: {}, &blk)
28
+ def log_process(message, process: nil, short: false, quiet: false, verbose: nil, style: {}, status: {}, &blk)
29
29
  style[:message] ||= DEFAULT_STYLE[:message]
30
30
  style[:process] ||= DEFAULT_STYLE[:process]
31
31
  style[:failed] ||= DEFAULT_STYLE[:failed]
@@ -34,9 +34,11 @@ module Dapp
34
34
  status[:success] ||= t(code: 'status.success.default')
35
35
  status[:failed] ||= t(code: 'status.failed.default')
36
36
 
37
+ is_verbose = (verbose.nil? ? log_verbose? : verbose) && !short
38
+
37
39
  if quiet
38
40
  log_process_quiet(message.to_s, style: style, status: status, &blk)
39
- elsif log_verbose? && !short
41
+ elsif is_verbose
40
42
  process ||= t(code: 'status.process.default')
41
43
  log_process_verbose(message.to_s, process: process, style: style, status: status, &blk)
42
44
  else
@@ -49,12 +49,12 @@ module Dapp
49
49
 
50
50
  protected
51
51
 
52
- def shellout_with_logging(log_verbose: false, **kwargs)
52
+ def shellout_with_logging(log_verbose: false, force_log: false, **kwargs)
53
53
  return yield(**kwargs) unless instance_of? Dapp
54
54
 
55
55
  begin
56
56
  stream = Stream.new
57
- if log_verbose && log_verbose?
57
+ if force_log || (log_verbose && log_verbose?)
58
58
  kwargs[:live_stream] = Proxy::Base.new(stream, STDOUT, with_time: log_time?)
59
59
  else
60
60
  kwargs[:live_stdout] = Proxy::Base.new(stream, with_time: log_time?)
@@ -60,9 +60,9 @@ module Dapp
60
60
  end
61
61
 
62
62
  def setup_ssh_agent
63
- return unless cli_options[:ssh_key]
63
+ return unless options[:ssh_key]
64
64
 
65
- cli_options[:ssh_key].each do |ssh_key|
65
+ options[:ssh_key].each do |ssh_key|
66
66
  raise Error::Dapp, code: :ssh_key_not_found, data: { path: ssh_key } unless File.exist? ssh_key
67
67
 
68
68
  File.chmod 0o600, ssh_key
@@ -0,0 +1 @@
1
+ module Dapp::Deployment; end
@@ -0,0 +1,120 @@
1
+ module Dapp
2
+ module Deployment
3
+ class App
4
+ include Mod::Namespace
5
+ include Mod::SystemEnvironments
6
+ include Mod::Jobs
7
+
8
+ attr_reader :deployment
9
+ attr_reader :app_config
10
+ alias config app_config
11
+
12
+ def initialize(app_config:, deployment:)
13
+ @app_config = app_config
14
+ @deployment = deployment
15
+ end
16
+
17
+ def name(*args)
18
+ deployment.name(app_config._name, *args)
19
+ end
20
+
21
+ def kube
22
+ @kube ||= KubeApp.new(self)
23
+ end
24
+
25
+ [:dimg, :expose, :bootstrap, :migrate].each do |directive|
26
+ define_method directive do
27
+ app_config.public_send("_#{directive}")
28
+ end
29
+ end
30
+
31
+ def to_kube_deployments(repo, image_version)
32
+ {}.tap do |hash|
33
+ hash[name] = {}.tap do |deployment|
34
+ deployment['metadata'] = {}.tap do |metadata|
35
+ metadata['name'] = name
36
+ metadata['labels'] = kube.labels
37
+ end
38
+ deployment['spec'] = {}.tap do |spec|
39
+ spec['replicas'] = scale
40
+ spec['template'] = {}
41
+ spec['template']['metadata'] = deployment['metadata']
42
+ spec['template']['spec'] = {}.tap do |template_spec|
43
+ template_spec['containers'] = [].tap do |containers|
44
+ containers << {}.tap do |container|
45
+ ports = expose._port.map do |port|
46
+ {
47
+ 'containerPort' => port._number,
48
+ 'name' => ['app', port._number].join('-'),
49
+ 'protocol' => port._protocol
50
+ }
51
+ end
52
+ volume_mounts = [{'mountPath' => '/.data', 'name' => "volume-#{self.name}"}]
53
+
54
+ container['imagePullPolicy'] = 'Always'
55
+ container['image'] = [repo, [dimg, image_version].compact.join('-')].join(':')
56
+ container['name'] = dimg_name
57
+ container['env'] = environments unless environments.empty?
58
+ container['ports'] = ports unless expose._port.empty?
59
+ container['volumeMounts'] = volume_mounts
60
+ end
61
+ end
62
+
63
+ template_spec['volumes'] = [
64
+ {
65
+ 'name' => "volume-#{name}",
66
+ 'hostPath' => {'path' => "/var/lib/dapp/deployment/volumes/#{self.deployment.name}/#{self.name}"}
67
+ }
68
+ ]
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+
75
+ def to_kube_services
76
+ return {} if expose._port.empty?
77
+
78
+ {}.tap do |hash|
79
+ hash[service_name] = {}.tap do |service|
80
+ service['metadata'] = {}.tap do |metadata|
81
+ metadata['name'] = service_name
82
+ metadata['labels'] = kube.labels
83
+ end
84
+ service['spec'] = {}.tap do |spec|
85
+ spec['selector'] = kube.labels
86
+ spec['ports'] = expose._port.map do |port|
87
+ {
88
+ 'port' => port._number,
89
+ 'name' => ['service', port._number].join('-'),
90
+ 'protocol' => port._protocol
91
+ }.tap do |h|
92
+ h['targetPort'] = port._target unless port._target.nil?
93
+ end
94
+ end
95
+ spec['type'] = expose._type
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ protected
102
+
103
+ def dimg_name
104
+ name(dimg)
105
+ end
106
+
107
+ def service_name
108
+ name('service')
109
+ end
110
+
111
+ def namespace
112
+ deployment.namespace
113
+ end
114
+
115
+ def secret
116
+ deployment.dapp.secret
117
+ end
118
+ end
119
+ end
120
+ end
@@ -0,0 +1 @@
1
+ ::Dapp::CLI.send(:include, ::Dapp::Deployment::CLI::Command)
@@ -0,0 +1,14 @@
1
+ module Dapp::Deployment::CLI
2
+ module Command
3
+ class Base < ::Dapp::CLI::Command::Base
4
+ def run(argv = ARGV)
5
+ self.class.parse_options(self, argv)
6
+ ::Dapp::Dapp.new(options: cli_options).public_send(run_method)
7
+ end
8
+
9
+ def run_method
10
+ :"deployment_#{class_to_lowercase}"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ module Dapp::Deployment::CLI
2
+ module Command
3
+ class Deployment < ::Dapp::CLI
4
+ SUBCOMMANDS = ['apply', 'mrproper', 'secret generate', 'secret key generate', 'minikube setup'].freeze
5
+
6
+ banner <<BANNER.freeze
7
+ Usage: dapp deployment sub-command [sub-command options]
8
+
9
+ Available subcommands: (for details, dapp deployment SUB-COMMAND --help)
10
+
11
+ dapp deployment apply [options] [APP ...] REPO
12
+ dapp deployment secret key generate
13
+ dapp deployment secret generate
14
+ dapp deployment minikube setup
15
+ dapp deployment mrproper [options]
16
+
17
+ Options:
18
+ BANNER
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ module Dapp::Deployment::CLI::Command
2
+ class Deployment < ::Dapp::CLI
3
+ class Apply < Base
4
+ banner <<BANNER.freeze
5
+ Usage:
6
+
7
+ dapp deploy apply [options] [APP ...] REPO
8
+
9
+ Options:
10
+ BANNER
11
+
12
+ option :namespace,
13
+ long: '--namespace NAME'
14
+
15
+ option :image_version,
16
+ long: '--image-version IMAGE_VERSION',
17
+ default: 'latest'
18
+
19
+ def run(argv = ARGV)
20
+ self.class.parse_options(self, argv)
21
+ repo = self.class.required_argument(self, 'repo')
22
+ ::Dapp::Dapp.new(options: cli_options(apps_patterns: cli_arguments, repo: repo)).deployment_apply
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,13 @@
1
+ module Dapp::Deployment::CLI::Command
2
+ class Deployment < ::Dapp::CLI
3
+ class MinikubeSetup < Base
4
+ banner <<BANNER.freeze
5
+ Usage:
6
+
7
+ dapp deployment minikube setup
8
+
9
+ Options:
10
+ BANNER
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Dapp::Deployment::CLI::Command
2
+ class Deployment < ::Dapp::CLI
3
+ class Mrproper < Base
4
+ banner <<BANNER.freeze
5
+ Usage:
6
+
7
+ dapp deployment mrproper [options]
8
+
9
+ Options:
10
+ BANNER
11
+ end
12
+ end
13
+ end