avm-tools 0.115.0 → 0.116.2
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/lib/avm/launcher/instances/settings.rb +7 -3
- data/lib/avm/projects/stereotypes.rb +2 -2
- data/lib/avm/ruby/bundler/incompatible_parser/depends_on.rb +1 -1
- data/lib/avm/ruby/bundler/incompatible_parser/gem_conflict.rb +1 -1
- data/lib/avm/ruby/bundler/incompatible_parser/in_gemfile.rb +1 -1
- data/lib/avm/ruby/bundler/incompatible_parser/version_requirement.rb +1 -1
- data/lib/avm/ruby/bundler/incompatible_parser.rb +1 -1
- data/lib/avm/tools/runner/app_src/ruby/bundler/gemfile_lock/git.rb +1 -1
- data/lib/avm/tools/runner/app_src/test.rb +2 -2
- data/lib/avm/tools/runner/git/deploy.rb +5 -5
- data/lib/avm/tools/runner/git/dirty_files.rb +1 -1
- data/lib/avm/tools/runner/git/revisions_test.rb +1 -1
- data/lib/avm/tools/runner/ruby/rubocop.rb +2 -2
- data/lib/avm/tools/version.rb +1 -1
- data/sub/avm/avm.gemspec +2 -2
- data/sub/avm/lib/avm/instances/base/auto_values/mailer.rb +2 -2
- data/sub/avm/lib/avm/instances/entry_keys.rb +2 -0
- data/sub/avm/lib/avm/registry/base.rb +2 -2
- data/sub/avm/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +1 -1
- data/sub/avm/lib/avm/sources/tests/builder.rb +1 -1
- data/sub/avm/lib/avm/version.rb +1 -1
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build/file.rb +1 -1
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/build.rb +2 -2
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runner/build.rb +1 -1
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/sources/runner.rb +2 -2
- data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +1 -1
- data/sub/avm-eac_rails_base0/avm-eac_rails_base0.gemspec +1 -1
- data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/version.rb +1 -1
- data/sub/avm-eac_rails_base1/avm-eac_rails_base1.gemspec +2 -2
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner/tasks_scheduler/systemd_unit.rb +46 -0
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner/tasks_scheduler.rb +17 -0
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/systemd_unit/service.rb +70 -0
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/systemd_unit/tasks_scheduler_command.rb +29 -0
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/systemd_unit.rb +57 -0
- data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/version.rb +1 -1
- data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/systemd_unit/tasks_scheduler.service +12 -0
- data/sub/avm-eac_rails_base1/template/avm/eac_rails_base1/systemd_unit/tasks_scheduler_command.sh +6 -0
- data/sub/avm-eac_redmine_base0/avm-eac_redmine_base0.gemspec +2 -2
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/core_update.rb +3 -3
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/docker_image.rb +17 -2
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/version.rb +1 -1
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/Dockerfile.template +2 -8
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/Dockerfile_apache_setup +8 -0
- data/sub/avm-eac_redmine_base0/template/avm/eac_redmine_base0/instances/docker_image/start.sh.template +1 -1
- data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +1 -1
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/patches/i18n.rb +1 -1
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/configured.rb +31 -0
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/envvar.rb +17 -0
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubocop/gemfile.rb +41 -0
- data/{lib/avm/ruby → sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1}/rubocop.rb +2 -2
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/tester.rb +1 -1
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/update/sub_update.rb +1 -1
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
- data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/instances/base.rb +6 -0
- data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/version.rb +1 -1
- data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +1 -1
- data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instance.rb +7 -0
- data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +1 -1
- data/sub/avm-files/avm-files.gemspec +1 -1
- data/sub/avm-files/lib/avm/files/appendable.rb +1 -1
- data/sub/avm-files/lib/avm/files/formatter/formats/ruby.rb +2 -2
- data/sub/avm-files/lib/avm/files/version.rb +1 -1
- data/sub/eac_cli/eac_cli.gemspec +1 -1
- data/sub/eac_cli/lib/eac_cli/old_configs/entry_reader.rb +1 -1
- data/sub/eac_cli/lib/eac_cli/old_configs/read_entry_options.rb +1 -1
- data/sub/eac_cli/lib/eac_cli/parser.rb +2 -2
- data/sub/eac_cli/lib/eac_cli/runner_with/help/builder.rb +1 -1
- data/sub/eac_cli/lib/eac_cli/runner_with/subcommands.rb +5 -5
- data/sub/eac_cli/lib/eac_cli/runner_with_set.rb +2 -2
- data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
- data/sub/eac_config/eac_config.gemspec +1 -1
- data/sub/eac_config/lib/eac_config/entry.rb +1 -1
- data/sub/eac_config/lib/eac_config/envvars_node/entry.rb +1 -1
- data/sub/eac_config/lib/eac_config/paths_hash/node.rb +1 -1
- data/sub/eac_config/lib/eac_config/version.rb +1 -1
- data/sub/eac_fs/eac_fs.gemspec +1 -1
- data/sub/eac_fs/lib/eac_fs/version.rb +1 -1
- data/sub/eac_git/eac_git.gemspec +1 -1
- data/sub/eac_git/lib/eac_git/local/remote.rb +2 -2
- data/sub/eac_git/lib/eac_git/local.rb +1 -1
- data/sub/eac_git/lib/eac_git/version.rb +1 -1
- data/sub/eac_rest/eac_rest.gemspec +1 -1
- data/sub/eac_rest/lib/eac_rest/api.rb +14 -3
- data/sub/eac_rest/lib/eac_rest/request.rb +22 -1
- data/sub/eac_rest/lib/eac_rest/response.rb +41 -1
- data/sub/eac_rest/lib/eac_rest/version.rb +1 -1
- data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +1 -1
- data/sub/eac_ruby_base0/lib/eac_ruby_base0/application.rb +2 -2
- data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/sub/eac_ruby_gems_utils/eac_ruby_gems_utils.gemspec +1 -1
- data/sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/version_file.rb +2 -2
- data/sub/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
- data/sub/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/custom_format.rb +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +16 -4
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/listable/value.rb +12 -2
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/debug.rb +6 -0
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp/{temp_spec.rb → directory_spec.rb} +0 -0
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/temp_spec.rb +4 -4
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/listable_spec.rb +169 -106
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/options_consumer_spec.rb +52 -17
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/listable_spec.rb +5 -3
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/simple_cache_spec.rb +5 -3
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/require_sub_spec.rb +3 -3
- data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +21 -18
- data/sub/eac_ruby_utils/spec/locales/pt-BR.yml +3 -0
- data/sub/eac_templates/eac_templates.gemspec +1 -1
- data/sub/eac_templates/lib/eac_templates/directory.rb +1 -1
- data/sub/eac_templates/lib/eac_templates/version.rb +1 -1
- metadata +41 -21
- data/lib/avm/ruby/rubocop/_configured.rb +0 -29
- data/lib/avm/ruby/rubocop/_envvar.rb +0 -15
- data/lib/avm/ruby/rubocop/_gemfile.rb +0 -39
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9ade74f1c59b191c0af317c03f8acb00fffc0e2bcac3120b56a604ab72a31ac1
|
|
4
|
+
data.tar.gz: 9d9967c47a11500142f7843b53ac7430f40fb191e441ce177ce583a58f46fffc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dae95c3e50159a7cd7a9c77745a106d462c2d5c8445a43f92f35cadeb42545509d83b53f2085a339b9dac930610a6cc68cb4551a2dd35e0a2566a1d07f932ce1
|
|
7
|
+
data.tar.gz: 7dc23f20f7430e88fd0a75582a899df38a81eb6a102f948611c96d810d766032656c730395ef66f4a3f89a11ad4b84d429252dcbf8e58082777b632f5e2ad188
|
|
@@ -23,7 +23,7 @@ module Avm
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def publishable?
|
|
26
|
-
|
|
26
|
+
publishable_value ? true : false
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def stereotype_publishable?(stereotype)
|
|
@@ -39,11 +39,15 @@ module Avm
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def parse_publishable_value(value, hash_to_true)
|
|
42
|
-
return value.with_indifferent_access if
|
|
42
|
+
return value.with_indifferent_access if parse_publishable_value_hash?(value, hash_to_true)
|
|
43
43
|
return true if value.nil? || value == true
|
|
44
44
|
return false if value == false
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
value ? true : false
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def parse_publishable_value_hash?(value, hash_to_true)
|
|
50
|
+
!hash_to_true && value.is_a?(::Hash)
|
|
47
51
|
end
|
|
48
52
|
end
|
|
49
53
|
end
|
|
@@ -11,8 +11,8 @@ module Avm
|
|
|
11
11
|
class << self
|
|
12
12
|
def list
|
|
13
13
|
@list ||= constants.map { |c| const_get(c) }
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
.select { |c| c.included_modules.include?(Avm::Projects::Stereotype) }
|
|
15
|
+
.freeze
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
end
|
|
@@ -9,7 +9,7 @@ module Avm
|
|
|
9
9
|
class IncompatibleParser
|
|
10
10
|
class DependsOn < ::Avm::Ruby::Bundler::IncompatibleParser::LineParserBase
|
|
11
11
|
LINE_PARSER = /(.+) was resolved to (.+), which depends on/
|
|
12
|
-
|
|
12
|
+
.to_parser { |m| new(m[1], m[2]) }
|
|
13
13
|
|
|
14
14
|
common_constructor :gem_name, :version do
|
|
15
15
|
self.version = ::Gem::Version.new(version)
|
|
@@ -9,7 +9,7 @@ module Avm
|
|
|
9
9
|
class IncompatibleParser
|
|
10
10
|
class GemConflict < ::Avm::Ruby::Bundler::IncompatibleParser::LineParserBase
|
|
11
11
|
LINE_PARSER = /Bundler could not find compatible versions for gem "(.+)":/
|
|
12
|
-
|
|
12
|
+
.to_parser { |m| new(m[1]) }
|
|
13
13
|
|
|
14
14
|
enable_simple_cache
|
|
15
15
|
common_constructor :gem_name
|
|
@@ -9,7 +9,7 @@ module Avm
|
|
|
9
9
|
class IncompatibleParser
|
|
10
10
|
class VersionRequirement < ::Avm::Ruby::Bundler::IncompatibleParser::LineParserBase
|
|
11
11
|
LINE_PARSER = /\A([a-z][a-z_0-9]*)(?: \((.+)\))?\z/
|
|
12
|
-
|
|
12
|
+
.to_parser { |m| new(m[1], m[2]) }
|
|
13
13
|
|
|
14
14
|
enable_simple_cache
|
|
15
15
|
attr_accessor :stack
|
|
@@ -29,7 +29,7 @@ module Avm
|
|
|
29
29
|
def git_continue_run(command)
|
|
30
30
|
infom "\"#{command}\" --continue..."
|
|
31
31
|
cmd = instance.git_repo.command(command, '--continue')
|
|
32
|
-
|
|
32
|
+
.envvar('GIT_EDITOR', 'true')
|
|
33
33
|
return unless !cmd.system && !conflict?
|
|
34
34
|
|
|
35
35
|
fatal_error "\"#{cmd}\" failed and there is no conflict"
|
|
@@ -71,8 +71,8 @@ module Avm
|
|
|
71
71
|
|
|
72
72
|
def test_builder
|
|
73
73
|
r = ::Avm::Sources::Tests::Builder.new(runner_context.call(:subject))
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
.include_main(include_main?)
|
|
75
|
+
.include_subs(include_subs?)
|
|
76
76
|
parsed.source_id.inject(r) { |a, e| a.include_id(e) }
|
|
77
77
|
end
|
|
78
78
|
|
|
@@ -78,15 +78,15 @@ module Avm
|
|
|
78
78
|
|
|
79
79
|
def deploy
|
|
80
80
|
::Avm::Git::Commit.new(git, reference_sha1)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
.deploy_to_url(target_url)
|
|
82
|
+
.append_templatized_directories(appended_directories)
|
|
83
|
+
.variables_source_set(variables_source)
|
|
84
|
+
.run
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
def target_url
|
|
88
88
|
parsed.target_url.if_present { |v| return v }
|
|
89
|
-
instance.if_present { |v| return v.read_entry(
|
|
89
|
+
instance.if_present { |v| return v.read_entry(::Avm::Instances::EntryKeys::FS_URL) }
|
|
90
90
|
nil
|
|
91
91
|
end
|
|
92
92
|
|
|
@@ -51,7 +51,7 @@ module Avm
|
|
|
51
51
|
|
|
52
52
|
def revisions_uncached
|
|
53
53
|
runner_context.call(:git).execute!('log', '--pretty=format:%H', 'origin/master..HEAD')
|
|
54
|
-
|
|
54
|
+
.each_line.map(&:strip).reverse.map do |sha1|
|
|
55
55
|
::Avm::Git::RevisionTest.new(runner_context.call(:git), sha1, test_revision_options)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'avm/tools/core_ext'
|
|
4
|
-
require 'avm/
|
|
4
|
+
require 'avm/eac_ruby_base1/rubocop'
|
|
5
5
|
|
|
6
6
|
module Avm
|
|
7
7
|
module Tools
|
|
@@ -15,7 +15,7 @@ module Avm
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def run
|
|
18
|
-
::Avm::
|
|
18
|
+
::Avm::EacRubyBase1::Rubocop.new(path, parsed.rubocop_args).run
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
private
|
data/lib/avm/tools/version.rb
CHANGED
data/sub/avm/avm.gemspec
CHANGED
|
@@ -21,6 +21,6 @@ Gem::Specification.new do |s|
|
|
|
21
21
|
s.add_dependency 'htmlbeautifier', '~> 1.3', '>= 1.3.1'
|
|
22
22
|
s.add_dependency 'minitar', '~> 0.9'
|
|
23
23
|
|
|
24
|
-
s.add_development_dependency 'aranha-parsers', '~> 0.
|
|
25
|
-
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.
|
|
24
|
+
s.add_development_dependency 'aranha-parsers', '~> 0.14', '~> 0.14.1'
|
|
25
|
+
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
|
|
26
26
|
end
|
|
@@ -9,8 +9,8 @@ module Avm
|
|
|
9
9
|
module AutoValues
|
|
10
10
|
module Mailer
|
|
11
11
|
::Avm::Instances::EntryKeys.all.select { |c| c.to_s.start_with?('mailer.') }
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
.reject { |c| c == ::Avm::Instances::EntryKeys::MAILER_ID }
|
|
13
|
+
.each do |mailer_key|
|
|
14
14
|
define_method ::Avm::Instances::Entry.auto_value_method_name(mailer_key) do
|
|
15
15
|
mailer_auto_common(mailer_key)
|
|
16
16
|
end
|
|
@@ -43,8 +43,10 @@ module Avm
|
|
|
43
43
|
|
|
44
44
|
{
|
|
45
45
|
'' => %w[data_fs_path fs_path host_id name source_instance_id],
|
|
46
|
+
admin: %w[username password api_key],
|
|
46
47
|
database: %w[id hostname limit name password port system timeout username extra],
|
|
47
48
|
docker: %w[registry],
|
|
49
|
+
fs: %w[url],
|
|
48
50
|
mailer: {
|
|
49
51
|
'' => %w[id from reply_to],
|
|
50
52
|
smtp: %w[address port domain username password authentication openssl_verify_mode
|
|
@@ -17,7 +17,7 @@ module Avm
|
|
|
17
17
|
|
|
18
18
|
def detect_optional(*registered_initialize_args)
|
|
19
19
|
registered_modules.reverse.lazy.map { |klass| klass.new(*registered_initialize_args) }
|
|
20
|
-
|
|
20
|
+
.find(&:valid?)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def provider_module_suffix
|
|
@@ -40,7 +40,7 @@ module Avm
|
|
|
40
40
|
|
|
41
41
|
def registered_modules_uncached
|
|
42
42
|
registered_gems.flat_map { |registry| modules_from_registry(registry) }
|
|
43
|
-
|
|
43
|
+
.select { |v| valid_registered_module?(v) }.uniq
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def modules_from_registry(registry)
|
|
@@ -4,7 +4,7 @@ require 'avm/registry'
|
|
|
4
4
|
|
|
5
5
|
::RSpec.shared_examples 'not_in_avm_registry' do |registry_method = nil|
|
|
6
6
|
registry_method.if_present(::Avm::Registry.registries) { |v| [::Avm::Registry.send(v)] }
|
|
7
|
-
|
|
7
|
+
.each do |registry|
|
|
8
8
|
context "when registry is #{registry}" do
|
|
9
9
|
it 'is not in the avm registry' do
|
|
10
10
|
expect(registry.registered_modules).not_to include(described_class)
|
|
@@ -33,7 +33,7 @@ module Avm
|
|
|
33
33
|
# @return [Array<Avm::Sources::Tests::Single>]
|
|
34
34
|
def available_units
|
|
35
35
|
@available_units ||= ([main_source] + main_source.subs)
|
|
36
|
-
|
|
36
|
+
.map { |a_source| create_unit(a_source) }
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def available_units_from_main
|
data/sub/avm/lib/avm/version.rb
CHANGED
|
@@ -25,7 +25,7 @@ module Avm
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def default_target_directory
|
|
28
|
-
project.
|
|
28
|
+
project.path.join('build')
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def target_directory
|
|
@@ -36,7 +36,7 @@ module Avm
|
|
|
36
36
|
|
|
37
37
|
def source_files_uncached
|
|
38
38
|
r = []
|
|
39
|
-
project.
|
|
39
|
+
project.path.children.each do |child|
|
|
40
40
|
next unless SOURCE_EXTNAMES.include?(child.extname)
|
|
41
41
|
|
|
42
42
|
r << ::Avm::EacAsciidoctorBase0::Sources::Build::File.new(self, child.basename)
|
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
|
|
|
12
12
|
|
|
13
13
|
s.files = Dir['{lib,template}/**/*']
|
|
14
14
|
|
|
15
|
-
s.add_dependency 'avm-eac_rails_base1', '~> 0.
|
|
15
|
+
s.add_dependency 'avm-eac_rails_base1', '~> 0.2'
|
|
16
16
|
s.add_dependency 'eac_ruby_utils', '~> 0.80', '>= 0.80.2'
|
|
17
17
|
|
|
18
18
|
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.4'
|
|
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
|
|
|
12
12
|
|
|
13
13
|
s.files = Dir['{lib}/**/*']
|
|
14
14
|
|
|
15
|
-
s.add_dependency 'avm-eac_webapp_base0', '~> 0.
|
|
15
|
+
s.add_dependency 'avm-eac_webapp_base0', '~> 0.3'
|
|
16
16
|
s.add_dependency 'eac_ruby_gems_utils', '~> 0.9', '>= 0.9.9'
|
|
17
17
|
s.add_dependency 'eac_ruby_utils', '~> 0.68'
|
|
18
18
|
|
|
19
|
-
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.
|
|
19
|
+
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
|
|
20
20
|
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'avm/eac_rails_base1/systemd_unit'
|
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
|
5
|
+
|
|
6
|
+
module Avm
|
|
7
|
+
module EacRailsBase1
|
|
8
|
+
class Runner < ::Avm::EacWebappBase0::Runner
|
|
9
|
+
class TasksScheduler
|
|
10
|
+
class SystemdUnit
|
|
11
|
+
DEFAULT_RESTART = 'on-failure'
|
|
12
|
+
|
|
13
|
+
runner_with :help do
|
|
14
|
+
desc 'Configure Systemd unit for instace\'s tasks scheduler daemon (Reference: ' \
|
|
15
|
+
'https://www.freedesktop.org/software/systemd/man/systemd.service.html).'
|
|
16
|
+
bool_opt '-e', '--exec-run', 'Run daemon with "run" instead of "start"/"stop".'
|
|
17
|
+
arg_opt '-r', '--restart', 'Value for systemd.service, Restart=.',
|
|
18
|
+
default: DEFAULT_RESTART
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
delegate :restart, to: :parsed
|
|
22
|
+
|
|
23
|
+
def run
|
|
24
|
+
if result.error?
|
|
25
|
+
fatal_error result.to_s
|
|
26
|
+
else
|
|
27
|
+
infov 'Result', result.label
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def systemd_unit_uncached
|
|
34
|
+
::Avm::EacRailsBase1::SystemdUnit.new(runner_context.call(:instance),
|
|
35
|
+
restart: parsed.restart,
|
|
36
|
+
exec_run: parsed.exec_run?)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def result_uncached
|
|
40
|
+
systemd_unit.run
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacRailsBase1
|
|
7
|
+
class Runner < ::Avm::EacWebappBase0::Runner
|
|
8
|
+
class TasksScheduler
|
|
9
|
+
require_sub __FILE__
|
|
10
|
+
|
|
11
|
+
runner_with :help, :subcommands do
|
|
12
|
+
subcommands
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacRailsBase1
|
|
7
|
+
class SystemdUnit
|
|
8
|
+
module Service
|
|
9
|
+
def service_content
|
|
10
|
+
template.child('tasks_scheduler.service').apply(variables_source)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def service_exec_lines
|
|
14
|
+
service_exec_operations
|
|
15
|
+
.map { |k, v| "#{k}=#{tasks_scheduler_command_path} #{v}" }
|
|
16
|
+
.join("\n")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def service_path
|
|
20
|
+
::Pathname.new('/etc/systemd/system').join(unit_name)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def service_link_path
|
|
24
|
+
::Pathname.new('/etc/systemd/system/multi-user.target.wants').join(unit_name)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def verify_service
|
|
28
|
+
sudo_system!('systemd-analyze', 'verify', service_path)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def enable_service
|
|
34
|
+
systemctl('enable', unit_name)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def link_service
|
|
38
|
+
sudo_execute!('rm', '-f', service_link_path)
|
|
39
|
+
sudo_execute!('ln', '-s', service_path, service_link_path)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def reload_systemd
|
|
43
|
+
systemctl('daemon-reload')
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [Hash<String, String>]
|
|
47
|
+
def service_exec_operations
|
|
48
|
+
if exec_run?
|
|
49
|
+
{ 'ExecStart' => 'run' }
|
|
50
|
+
else
|
|
51
|
+
{ 'ExecStart' => 'start', 'ExecStop' => 'stop' }
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def start_service
|
|
56
|
+
systemctl('start', unit_name)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def systemctl(*args)
|
|
60
|
+
sudo_system!('systemctl', *args)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def write_service
|
|
64
|
+
infom 'Writing service\'s unit file...'
|
|
65
|
+
platform_instance.file_sudo_write(service_path, service_content)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacRailsBase1
|
|
7
|
+
class SystemdUnit
|
|
8
|
+
module TasksSchedulerCommand
|
|
9
|
+
def tasks_scheduler_command_content
|
|
10
|
+
template.child('tasks_scheduler_command.sh').apply(variables_source)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def tasks_scheduler_command_path
|
|
14
|
+
"/opt/aux/#{instance.id}/tasks_scheduler.sh"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def write_tasks_scheduler_command
|
|
20
|
+
infom 'Writing tasks scheduler\'s command...'
|
|
21
|
+
sudo_execute!('mkdir', '-p', ::File.dirname(tasks_scheduler_command_path))
|
|
22
|
+
platform_instance.file_sudo_write(tasks_scheduler_command_path,
|
|
23
|
+
tasks_scheduler_command_content)
|
|
24
|
+
sudo_execute!('chmod', '+x', tasks_scheduler_command_path)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'avm/jobs/base'
|
|
4
|
+
require 'avm/eac_ubuntu_base0/apache'
|
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
|
6
|
+
|
|
7
|
+
module Avm
|
|
8
|
+
module EacRailsBase1
|
|
9
|
+
class SystemdUnit
|
|
10
|
+
JOBS = %w[write_tasks_scheduler_command write_service link_service verify_service
|
|
11
|
+
reload_systemd enable_service start_service].freeze
|
|
12
|
+
|
|
13
|
+
include ::Avm::Jobs::Base
|
|
14
|
+
require_sub __FILE__, include_modules: true
|
|
15
|
+
delegate :platform_instance, to: :instance
|
|
16
|
+
|
|
17
|
+
enable_listable
|
|
18
|
+
lists.add_symbol :option, :exec_run, :restart
|
|
19
|
+
|
|
20
|
+
def description
|
|
21
|
+
"#{instance.id} Tasks Scheduler"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def exec_run?
|
|
25
|
+
options[OPTION_EXEC_RUN]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def option_list
|
|
29
|
+
self.class.lists.option
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def restart
|
|
33
|
+
options[OPTION_RESTART]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def unit_name
|
|
37
|
+
"#{instance.id}_tasks_scheduler.service"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def user
|
|
41
|
+
instance.ssh_username
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
def sudo_execute!(*args)
|
|
47
|
+
platform_instance.host_env.command(['sudo'] + args).execute!
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def sudo_system!(*args)
|
|
51
|
+
command_args = ['sudo'] + args
|
|
52
|
+
infom "Running \"#{::Shellwords.join(command_args)}\"..."
|
|
53
|
+
platform_instance.host_env.command(command_args).system!
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -12,12 +12,12 @@ Gem::Specification.new do |s|
|
|
|
12
12
|
|
|
13
13
|
s.files = Dir['{lib,template}/**/*']
|
|
14
14
|
|
|
15
|
-
s.add_dependency 'avm-eac_rails_base1', '~> 0.
|
|
15
|
+
s.add_dependency 'avm-eac_rails_base1', '~> 0.2'
|
|
16
16
|
s.add_dependency 'avm-eac_ubuntu_base0', '~> 0.2'
|
|
17
17
|
s.add_dependency 'curb', '~> 0.9.10'
|
|
18
18
|
s.add_dependency 'eac_fs', '~> 0.4'
|
|
19
19
|
s.add_dependency 'eac_rest', '~> 0.4'
|
|
20
20
|
s.add_dependency 'eac_ruby_utils', '~> 0.68'
|
|
21
21
|
|
|
22
|
-
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.
|
|
22
|
+
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
|
|
23
23
|
end
|