avm-tools 0.69.3 → 0.72.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/data/instance/files_unit.rb +2 -1
  3. data/lib/avm/eac_rails_base0/apache_host.rb +1 -1
  4. data/lib/avm/eac_rails_base0/apache_path.rb +50 -0
  5. data/lib/avm/eac_rails_base0/deploy.rb +2 -1
  6. data/lib/avm/eac_rails_base0/instance.rb +2 -2
  7. data/lib/avm/eac_redmine_base0/deploy.rb +2 -2
  8. data/lib/avm/eac_redmine_base0/instance.rb +6 -5
  9. data/lib/avm/eac_ubuntu_base0/apache.rb +26 -0
  10. data/lib/avm/eac_ubuntu_base0/apache/resource.rb +59 -0
  11. data/lib/avm/eac_ubuntu_base0/docker_image.rb +14 -0
  12. data/lib/avm/eac_webapp_base0/apache_host.rb +2 -2
  13. data/lib/avm/eac_webapp_base0/deploy.rb +2 -2
  14. data/lib/avm/eac_webapp_base0/deploy/file_unit.rb +2 -1
  15. data/lib/avm/git/auto_commit_path.rb +4 -2
  16. data/lib/avm/instances/application.rb +4 -0
  17. data/lib/avm/instances/base.rb +2 -1
  18. data/lib/avm/instances/base/auto_values/access.rb +5 -4
  19. data/lib/avm/instances/base/auto_values/admin.rb +2 -2
  20. data/lib/avm/instances/base/auto_values/database.rb +1 -1
  21. data/lib/avm/instances/base/auto_values/filesystem.rb +8 -2
  22. data/lib/avm/instances/base/auto_values/ruby.rb +1 -1
  23. data/lib/avm/instances/base/auto_values/system.rb +2 -2
  24. data/lib/avm/instances/entries.rb +5 -8
  25. data/lib/avm/instances/entry.rb +53 -0
  26. data/lib/avm/instances/entry_keys.rb +39 -6
  27. data/lib/avm/patches/i18n.rb +1 -1
  28. data/lib/avm/patches/object/template.rb +1 -1
  29. data/lib/avm/rails/instance.rb +19 -0
  30. data/lib/avm/self.rb +0 -4
  31. data/lib/avm/self/instance.rb +1 -1
  32. data/lib/avm/self/root.rb +13 -0
  33. data/lib/avm/stereotypes/eac_wordpress_base0/apache_host.rb +1 -1
  34. data/lib/avm/tools/runner/eac_rails_base0.rb +7 -12
  35. data/lib/avm/tools/runner/eac_rails_base0/apache_path.rb +38 -0
  36. data/lib/avm/tools/runner/eac_rails_base0/rails_server.rb +41 -0
  37. data/lib/avm/tools/runner/git/deploy.rb +3 -1
  38. data/lib/avm/tools/runner/instance.rb +28 -0
  39. data/lib/avm/tools/runner/instance/info.rb +44 -0
  40. data/lib/avm/tools/version.rb +1 -1
  41. data/template/avm/eac_rails_base0/apache_path/default.conf +13 -0
  42. data/vendor/eac_cli/lib/eac_cli/runner.rb +1 -1
  43. data/vendor/eac_cli/lib/eac_cli/runner/context.rb +19 -2
  44. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  45. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem.rb +2 -1
  46. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/gem/command.rb +1 -1
  47. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple/decorated_gem.rb +10 -6
  48. data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
  49. data/vendor/eac_ruby_gems_utils/spec/{rubocop_check_spec.rb → code/rubocop_check_spec.rb} +0 -0
  50. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/ruby/command.rb +2 -1
  51. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  52. metadata +15 -8
  53. data/lib/avm/instances/entries/entry_reader.rb +0 -45
  54. data/lib/avm/stereotypes/eac_ubuntu_base0/apache.rb +0 -27
  55. data/lib/avm/stereotypes/eac_ubuntu_base0/apache/site.rb +0 -61
  56. data/lib/avm/stereotypes/eac_ubuntu_base0/docker_image.rb +0 -16
  57. data/lib/avm/stereotypes/rails/instance.rb +0 -20
@@ -1,13 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
- require 'eac_ruby_utils/require_sub'
5
4
  require 'avm/configs'
6
- ::EacRubyUtils.require_sub(__FILE__)
5
+ require 'avm/instances/entry'
7
6
 
8
7
  module Avm
9
8
  module Instances
10
9
  module Entries
10
+ def entry(suffix, options = {})
11
+ ::Avm::Instances::Entry.new(self, suffix, options)
12
+ end
13
+
11
14
  def path_prefix
12
15
  @path_prefix ||= [id].freeze
13
16
  end
@@ -36,12 +39,6 @@ module Avm
36
39
  def other_entry_value(instance_id, entry_suffix)
37
40
  ::Avm::Instances::Base.by_id(instance_id).read_entry_optional(entry_suffix)
38
41
  end
39
-
40
- private
41
-
42
- def entry(suffix, options)
43
- ::Avm::Instances::Entries::EntryReader.new(self, suffix, options)
44
- end
45
42
  end
46
43
  end
47
44
  end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Instances
7
+ class Entry
8
+ class << self
9
+ def auto_value_method_name(suffix)
10
+ "auto_#{suffix.to_s.gsub('.', '_')}"
11
+ end
12
+ end
13
+
14
+ common_constructor :parent, :suffix, :options
15
+
16
+ def auto_value
17
+ parent.respond_to?(auto_value_method, true) ? parent.send(auto_value_method) : nil
18
+ end
19
+
20
+ def auto_value_method
21
+ self.class.auto_value_method_name(suffix)
22
+ end
23
+
24
+ def full_path
25
+ (parent.path_prefix + suffix_as_array).join('.')
26
+ end
27
+
28
+ def optional_value
29
+ read(required: false, noinput: true) || auto_value
30
+ end
31
+
32
+ def read(extra_options = {})
33
+ ::Avm.configs.read_entry(full_path, options.merge(extra_options))
34
+ end
35
+
36
+ def suffix_as_array
37
+ if suffix.is_a?(::Array)
38
+ suffix.dup
39
+ else
40
+ ::EacRubyUtils::PathsHash.parse_entry_key(suffix.to_s)
41
+ end
42
+ end
43
+
44
+ def value
45
+ optional_value || read
46
+ end
47
+
48
+ def write(value)
49
+ ::Avm.configs.configs.write_entry(full_path, value)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -3,15 +3,48 @@
3
3
  module Avm
4
4
  module Instances
5
5
  module EntryKeys
6
- {
7
- database: %w[id hostname name password port system username],
8
- web: %w[authority hostname path port scheme url userinfo]
9
- }.each do |prefix, suffixes|
10
- suffixes.each do |suffix|
11
- key = "#{prefix}.#{suffix}"
6
+ class << self
7
+ def all
8
+ all_keys.to_a
9
+ end
10
+
11
+ def keys_consts_set(prefix, suffixes)
12
+ if suffixes.is_a?(::Hash)
13
+ keys_consts_set_from_hash(prefix, suffixes)
14
+ elsif suffixes.is_a?(::Enumerable)
15
+ keys_consts_set_from_enum(prefix, suffixes)
16
+ else
17
+ raise "Unmapped suffixes class: #{suffixes.class}"
18
+ end
19
+ end
20
+
21
+ def key_const_set(prefix, suffix)
22
+ key = [prefix, suffix].reject(&:blank?).join('.')
12
23
  const_set(key.gsub('.', '_').upcase, key)
24
+ all_keys << key
25
+ end
26
+
27
+ private
28
+
29
+ def all_keys
30
+ @all_keys ||= ::Set.new
31
+ end
32
+
33
+ def keys_consts_set_from_enum(prefix, suffixes)
34
+ suffixes.each { |suffix| key_const_set(prefix, suffix) }
35
+ end
36
+
37
+ def keys_consts_set_from_hash(prefix, suffixes)
38
+ suffixes.each { |k, v| keys_consts_set(prefix.to_s + (k.blank? ? '' : ".#{k}"), v) }
13
39
  end
14
40
  end
41
+
42
+ {
43
+ '' => %w[fs_path host_id source_instance_id],
44
+ database: %w[id hostname name password port system username],
45
+ ssh: %w[hostname port url username],
46
+ web: %w[authority hostname path port scheme url userinfo]
47
+ }.each { |prefix, suffixes| keys_consts_set(prefix, suffixes) }
15
48
  end
16
49
  end
17
50
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/self'
3
+ require 'avm/self/root'
4
4
  require 'i18n'
5
5
 
6
6
  module Avm
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/self'
3
+ require 'avm/self/root'
4
4
  require 'eac_ruby_utils/patches/object/template'
5
5
 
6
6
  ::EacRubyUtils::Templates::Searcher.default.included_paths <<
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Rails
5
+ module Instance
6
+ def bundle(*args)
7
+ the_gem.bundle(*args).chdir_root.envvar('RAILS_ENV', 'production')
8
+ end
9
+
10
+ def rake(*args)
11
+ bundle('exec', 'rake', *args)
12
+ end
13
+
14
+ def the_gem
15
+ @the_gem ||= ::EacRubyGemsUtils::Gem.new(::File.join(read_entry('fs_path')), host_env)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -16,10 +16,6 @@ module Avm
16
16
  def instance
17
17
  @instance ||= ::Avm::Self::Instance.by_id('avm-tools_self')
18
18
  end
19
-
20
- def root
21
- ::Pathname.new('../..').expand_path(__dir__)
22
- end
23
19
  end
24
20
  end
25
21
  end
@@ -3,7 +3,7 @@
3
3
  require 'avm/instances/base'
4
4
  require 'avm/self/docker_image'
5
5
  require 'avm/self/instance/entry_keys'
6
- require 'avm/stereotypes/eac_ubuntu_base0/docker_image'
6
+ require 'avm/eac_ubuntu_base0/docker_image'
7
7
 
8
8
  module Avm
9
9
  module Self
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ module Avm
6
+ module Self
7
+ class << self
8
+ def root
9
+ ::Pathname.new('../../..').expand_path(__dir__)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -7,7 +7,7 @@ module Avm
7
7
  module EacWordpressBase0
8
8
  class ApacheHost < ::Avm::EacWebappBase0::ApacheHost
9
9
  def document_root
10
- instance.read_entry(:fs_path)
10
+ instance.read_entry(::Avm::Instances::EntryKeys::FS_PATH)
11
11
  end
12
12
 
13
13
  def extra_content
@@ -1,27 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'eac_cli/core_ext'
3
4
  require 'eac_ruby_utils/console/docopt_runner'
4
5
  require 'eac_ruby_utils/simple_cache'
5
6
  require 'avm/eac_rails_base0/instance'
6
- require 'eac_ruby_utils/require_sub'
7
7
  ::EacRubyUtils.require_sub(__FILE__)
8
8
 
9
9
  module Avm
10
10
  module Tools
11
11
  class Runner < ::EacRubyUtils::Console::DocoptRunner
12
12
  class EacRailsBase0 < ::EacRubyUtils::Console::DocoptRunner
13
- include ::EacRubyUtils::SimpleCache
13
+ runner_with
14
14
 
15
- DOC = <<~DOCOPT
16
- Utilities for EacRailsBase0 instances.
17
-
18
- Usage:
19
- __PROGRAM__ [options] <instance_id> __SUBCOMMANDS__
20
- __PROGRAM__ -h | --help
21
-
22
- Options:
23
- -h --help Show this screen.
24
- DOCOPT
15
+ runner_definition do
16
+ desc 'Utilities for EacRailsBase0 instances.'
17
+ pos_arg :instance_id
18
+ subcommands
19
+ end
25
20
 
26
21
  private
27
22
 
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'avm/eac_webapp_base0/runner/apache_host'
5
+ require 'eac_ruby_utils/console/docopt_runner'
6
+ require 'avm/eac_rails_base0/apache_path'
7
+
8
+ module Avm
9
+ module Tools
10
+ class Runner < ::EacRubyUtils::Console::DocoptRunner
11
+ class EacRailsBase0 < ::EacRubyUtils::Console::DocoptRunner
12
+ class ApachePath < ::EacRubyUtils::Console::DocoptRunner
13
+ runner_with
14
+
15
+ runner_definition do
16
+ desc 'Configure Apache path configuration for instance.'
17
+ end
18
+
19
+ def run
20
+ if result.error?
21
+ fatal_error result.to_s
22
+ else
23
+ infov 'Result', result.label
24
+ end
25
+ end
26
+
27
+ def apache_path_uncached
28
+ ::Avm::EacRailsBase0::ApachePath.new(context(:instance))
29
+ end
30
+
31
+ def result_uncached
32
+ apache_path.run
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/instances/entry_keys'
4
+ require 'eac_cli/core_ext'
5
+ require 'eac_ruby_utils/console/docopt_runner'
6
+ require 'shellwords'
7
+
8
+ module Avm
9
+ module Tools
10
+ class Runner < ::EacRubyUtils::Console::DocoptRunner
11
+ class EacRailsBase0 < ::EacRubyUtils::Console::DocoptRunner
12
+ class RailsServer
13
+ runner_with
14
+
15
+ runner_definition do
16
+ desc 'Run the embbeded Rails web server.'
17
+ arg_opt '-e', '--environment', 'Specifies the environment to run this server under' \
18
+ ' (development/test/production).'
19
+ end
20
+
21
+ def run
22
+ infov 'Bundle args', ::Shellwords.join(bundle_args)
23
+ infov 'Result', command.system
24
+ end
25
+
26
+ protected
27
+
28
+ def bundle_args
29
+ ['exec', 'rails', 'server', '--port',
30
+ runner_context.call(:instance).read_entry(::Avm::Instances::EntryKeys::WEB_PORT)] +
31
+ parsed.environment.if_present([]) { |v| ['--environment', v] }
32
+ end
33
+
34
+ def command
35
+ runner_context.call(:instance).bundle(*bundle_args).chdir_root
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -79,7 +79,9 @@ module Avm
79
79
 
80
80
  def dev_instance_fs_path
81
81
  instance.if_present do |v|
82
- v.application.instance('dev').read_entry_optional(:fs_path)
82
+ v.application.instance('dev').read_entry_optional(
83
+ ::Avm::Instances::EntryKeys::FS_PATH
84
+ )
83
85
  end
84
86
  end
85
87
 
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/instances/base'
4
+ require 'eac_cli/core_ext'
5
+ require 'eac_ruby_utils/console/docopt_runner'
6
+
7
+ module Avm
8
+ module Tools
9
+ class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Instance < ::EacRubyUtils::Console::DocoptRunner
11
+ require_sub __FILE__
12
+ runner_with
13
+
14
+ runner_definition do
15
+ desc 'Utilities for generic instances.'
16
+ pos_arg :instance_id
17
+ subcommands
18
+ end
19
+
20
+ private
21
+
22
+ def instance_uncached
23
+ ::Avm::Instances::Base.by_id(options['<instance_id>'])
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/instances/entry_keys'
4
+ require 'eac_cli/core_ext'
5
+ require 'eac_ruby_utils/console/docopt_runner'
6
+
7
+ module Avm
8
+ module Tools
9
+ class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Instance < ::EacRubyUtils::Console::DocoptRunner
11
+ class Info < ::EacRubyUtils::Console::DocoptRunner
12
+ runner_with
13
+
14
+ runner_definition do
15
+ desc 'Show info about a instance.'
16
+ end
17
+
18
+ def run
19
+ base_banner
20
+ entry_keys_banner
21
+ end
22
+
23
+ private
24
+
25
+ def base_banner
26
+ infov 'ID', instance.id
27
+ infov 'Application ID', instance.application.id
28
+ infov 'Suffix', instance.suffix
29
+ end
30
+
31
+ def entry_keys_banner
32
+ ::Avm::Instances::EntryKeys.all.each do |key|
33
+ infov key, instance.read_entry_optional(key)
34
+ end
35
+ end
36
+
37
+ def instance
38
+ context(:instance)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.69.3'
5
+ VERSION = '0.72.0'
6
6
  end
7
7
  end
@@ -0,0 +1,13 @@
1
+ <IfModule mod_passenger.c>
2
+ Alias "%%WEB.PATH%%" "%%FS_PATH%%/public"
3
+ <Location "%%WEB.PATH%%">
4
+ PassengerBaseURI "%%WEB.PATH%%"
5
+ PassengerAppRoot "%%FS_PATH%%"
6
+ PassengerAppEnv production
7
+ </Location>
8
+ <Directory "%%FS_PATH%%/public">
9
+ Allow from all
10
+ Options -MultiViews
11
+ Require all granted
12
+ </Directory>
13
+ </IfModule>