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.
- checksums.yaml +4 -4
- data/config/en/net_status.yml +36 -4
- data/lib/dapp.rb +84 -36
- data/lib/dapp/cli.rb +3 -2
- data/lib/dapp/cli/command/base.rb +69 -0
- data/lib/dapp/config/config.rb +17 -0
- data/lib/dapp/config/directive/base.rb +90 -3
- data/lib/dapp/dapp.rb +6 -14
- data/lib/dapp/dapp/dappfile.rb +20 -27
- data/lib/dapp/dapp/deps/base.rb +2 -2
- data/lib/dapp/dapp/lock.rb +1 -1
- data/lib/dapp/dapp/logging/base.rb +11 -7
- data/lib/dapp/dapp/logging/process.rb +4 -2
- data/lib/dapp/dapp/shellout/base.rb +2 -2
- data/lib/dapp/dapp/ssh_agent.rb +2 -2
- data/lib/dapp/deployment.rb +1 -0
- data/lib/dapp/deployment/app.rb +120 -0
- data/lib/dapp/deployment/cli/cli.rb +1 -0
- data/lib/dapp/deployment/cli/command/base.rb +14 -0
- data/lib/dapp/deployment/cli/command/deployment.rb +21 -0
- data/lib/dapp/deployment/cli/command/deployment/apply.rb +26 -0
- data/lib/dapp/deployment/cli/command/deployment/minikube_setup.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/mrproper.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/secret_generate.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/secret_key_generate.rb +13 -0
- data/lib/dapp/deployment/config/config.rb +46 -0
- data/lib/dapp/deployment/config/directive/app.rb +28 -0
- data/lib/dapp/deployment/config/directive/app/instance_methods.rb +51 -0
- data/lib/dapp/deployment/config/directive/base.rb +13 -0
- data/lib/dapp/deployment/config/directive/deployment.rb +11 -0
- data/lib/dapp/deployment/config/directive/expose.rb +68 -0
- data/lib/dapp/deployment/config/directive/group.rb +27 -0
- data/lib/dapp/deployment/config/directive/job.rb +28 -0
- data/lib/dapp/deployment/config/directive/mod/group.rb +22 -0
- data/lib/dapp/deployment/config/directive/mod/jobs.rb +26 -0
- data/lib/dapp/deployment/config/directive/namespace.rb +26 -0
- data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +37 -0
- data/lib/dapp/deployment/core_ext/hash.rb +19 -0
- data/lib/dapp/deployment/dapp/command/apply.rb +83 -0
- data/lib/dapp/deployment/dapp/command/common.rb +17 -0
- data/lib/dapp/deployment/dapp/command/minikube_setup.rb +393 -0
- data/lib/dapp/deployment/dapp/command/mrproper.rb +12 -0
- data/lib/dapp/deployment/dapp/command/secret_generate.rb +17 -0
- data/lib/dapp/deployment/dapp/command/secret_key_generate.rb +13 -0
- data/lib/dapp/deployment/dapp/dapp.rb +18 -0
- data/lib/dapp/deployment/dapp/dappfile.rb +23 -0
- data/lib/dapp/deployment/deployment.rb +46 -0
- data/lib/dapp/deployment/error/app.rb +7 -0
- data/lib/dapp/deployment/error/base.rb +7 -0
- data/lib/dapp/deployment/error/command.rb +7 -0
- data/lib/dapp/deployment/error/config.rb +7 -0
- data/lib/dapp/deployment/error/deployment.rb +7 -0
- data/lib/dapp/deployment/error/kubernetes.rb +7 -0
- data/lib/dapp/deployment/kube_app.rb +277 -0
- data/lib/dapp/deployment/kube_base.rb +97 -0
- data/lib/dapp/deployment/kube_deployment.rb +51 -0
- data/lib/dapp/deployment/kubernetes.rb +174 -0
- data/lib/dapp/deployment/kubernetes/error.rb +20 -0
- data/lib/dapp/deployment/mod/jobs.rb +37 -0
- data/lib/dapp/deployment/mod/namespace.rb +58 -0
- data/lib/dapp/deployment/mod/system_environments.rb +30 -0
- data/lib/dapp/deployment/secret.rb +93 -0
- data/lib/dapp/dimg/artifact.rb +1 -1
- data/lib/dapp/dimg/build/stage/artifact_default.rb +35 -23
- data/lib/dapp/dimg/build/stage/base.rb +1 -1
- data/lib/dapp/dimg/build/stage/before_setup.rb +0 -2
- data/lib/dapp/dimg/build/stage/build_artifact.rb +0 -2
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +2 -2
- data/lib/dapp/dimg/build/stage/install/install.rb +0 -1
- data/lib/dapp/dimg/build/stage/setup/setup.rb +0 -1
- data/lib/dapp/dimg/cli/cli.rb +1 -1
- data/lib/dapp/dimg/cli/command/base.rb +14 -0
- data/lib/dapp/dimg/cli/{dimg.rb → command/dimg.rb} +5 -7
- data/lib/dapp/dimg/cli/{bp.rb → command/dimg/bp.rb} +3 -3
- data/lib/dapp/dimg/cli/{build.rb → command/dimg/build.rb} +3 -3
- data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +3 -3
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +4 -4
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
- data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +3 -3
- data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +3 -3
- data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
- data/lib/dapp/dimg/cli/{push.rb → command/dimg/push.rb} +5 -5
- data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +8 -8
- data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
- data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +3 -3
- data/lib/dapp/dimg/cli/{stages.rb → command/dimg/stages.rb} +3 -3
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +5 -5
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_local.rb +5 -5
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_repo.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/pull.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/push.rb +6 -6
- data/lib/dapp/dimg/cli/{tag.rb → command/dimg/tag.rb} +6 -6
- data/lib/dapp/dimg/config/config.rb +20 -0
- data/lib/dapp/dimg/config/directive/artifact_dimg.rb +19 -0
- data/lib/dapp/dimg/config/directive/artifact_group.rb +45 -0
- data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +149 -0
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +128 -0
- data/lib/dapp/dimg/config/directive/dimg_group.rb +64 -0
- data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +1 -1
- data/lib/dapp/dimg/dapp/command/bp.rb +4 -4
- data/lib/dapp/dimg/dapp/command/build.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +1 -1
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +1 -1
- data/lib/dapp/dimg/dapp/command/cleanup.rb +1 -1
- data/lib/dapp/dimg/dapp/command/common.rb +19 -4
- data/lib/dapp/dimg/dapp/command/list.rb +1 -1
- data/lib/dapp/dimg/dapp/command/mrproper.rb +3 -3
- data/lib/dapp/dimg/dapp/command/push.rb +6 -5
- data/lib/dapp/dimg/dapp/command/run.rb +1 -1
- data/lib/dapp/dimg/dapp/command/spush.rb +4 -3
- data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +3 -3
- data/lib/dapp/dimg/dapp/command/stages/common.rb +4 -4
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +5 -4
- data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -3
- data/lib/dapp/dimg/dapp/command/tag.rb +3 -2
- data/lib/dapp/dimg/dapp/dapp.rb +33 -0
- data/lib/dapp/dimg/dapp/dappfile.rb +25 -0
- data/lib/dapp/dimg/dimg.rb +3 -3
- data/lib/dapp/dimg/dimg/path.rb +1 -1
- data/lib/dapp/dimg/dimg/stages.rb +1 -1
- data/lib/dapp/dimg/dimg/tags.rb +5 -5
- data/lib/dapp/dimg/docker_registry.rb +3 -7
- data/lib/dapp/dimg/git_artifact.rb +30 -14
- data/lib/dapp/dimg/git_repo/base.rb +13 -1
- data/lib/dapp/dimg/git_repo/own.rb +9 -1
- data/lib/dapp/dimg/image/docker.rb +9 -3
- data/lib/dapp/helper/cli.rb +3 -1
- data/lib/dapp/helper/net_status.rb +5 -1
- data/lib/dapp/helper/trivia.rb +1 -1
- data/lib/dapp/version.rb +2 -2
- metadata +84 -38
- data/lib/dapp/cli/base.rb +0 -63
- data/lib/dapp/config/base.rb +0 -54
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
- data/lib/dapp/dimg/cli/base.rb +0 -16
- data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
- data/lib/dapp/dimg/config/artifact_group.rb +0 -43
- data/lib/dapp/dimg/config/base.rb +0 -7
- data/lib/dapp/dimg/config/dimg.rb +0 -24
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
- data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
- data/lib/dapp/dimg/config/dimg_group.rb +0 -61
- data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
- data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
- data/lib/dapp/dimg/dapp/command.rb +0 -21
data/lib/dapp/dapp.rb
CHANGED
@@ -19,15 +19,11 @@ module Dapp
|
|
19
19
|
|
20
20
|
include Shellout::Base
|
21
21
|
|
22
|
-
attr_reader :
|
23
|
-
attr_reader :dimgs_patterns
|
22
|
+
attr_reader :options
|
24
23
|
|
25
|
-
def initialize(
|
26
|
-
@
|
27
|
-
|
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
|
72
|
-
Pathname.new(
|
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
|
data/lib/dapp/dapp/dappfile.rb
CHANGED
@@ -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(
|
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
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
e
|
45
|
-
|
46
|
-
|
47
|
-
|
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
|
data/lib/dapp/dapp/deps/base.rb
CHANGED
@@ -24,8 +24,8 @@ module Dapp
|
|
24
24
|
end
|
25
25
|
|
26
26
|
%w(rm rsync diff date cat
|
27
|
-
stat test sleep mkdir
|
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
|
data/lib/dapp/dapp/lock.rb
CHANGED
@@ -3,31 +3,35 @@ module Dapp
|
|
3
3
|
module Logging
|
4
4
|
module Base
|
5
5
|
def log_quiet?
|
6
|
-
|
6
|
+
options[:log_quiet]
|
7
7
|
end
|
8
8
|
|
9
9
|
def log_time?
|
10
|
-
|
10
|
+
options[:log_time]
|
11
11
|
end
|
12
12
|
|
13
13
|
def log_verbose?
|
14
|
-
|
14
|
+
options[:log_verbose]
|
15
15
|
end
|
16
16
|
|
17
17
|
def ignore_config_warning?
|
18
|
-
|
18
|
+
options[:ignore_config_warning]
|
19
19
|
end
|
20
20
|
|
21
21
|
def introspect_error?
|
22
|
-
|
22
|
+
options[:introspect_error]
|
23
23
|
end
|
24
24
|
|
25
25
|
def introspect_before_error?
|
26
|
-
|
26
|
+
options[:introspect_before_error]
|
27
27
|
end
|
28
28
|
|
29
29
|
def dry_run?
|
30
|
-
|
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
|
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?)
|
data/lib/dapp/dapp/ssh_agent.rb
CHANGED
@@ -60,9 +60,9 @@ module Dapp
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def setup_ssh_agent
|
63
|
-
return unless
|
63
|
+
return unless options[:ssh_key]
|
64
64
|
|
65
|
-
|
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
|