lono 8.0.0.pre.rc2 → 8.0.0.pre.rc3

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -2
  3. data/Gemfile +1 -3
  4. data/lib/lono/app/callable_option/concern.rb +12 -0
  5. data/lib/lono/app/callable_option.rb +56 -0
  6. data/lib/lono/app.rb +22 -23
  7. data/lib/lono/autoloader.rb +1 -0
  8. data/lib/lono/aws_services/helper.rb +0 -2
  9. data/lib/lono/blueprint.rb +1 -18
  10. data/lib/lono/builder/allow/base.rb +54 -0
  11. data/lib/lono/builder/allow/env.rb +17 -0
  12. data/lib/lono/builder/allow/region.rb +20 -0
  13. data/lib/lono/builder/allow.rb +8 -0
  14. data/lib/lono/builder/configset/combiner.rb +145 -0
  15. data/lib/lono/builder/configset/definition/base.rb +47 -0
  16. data/lib/lono/builder/configset/definition/context.rb +29 -0
  17. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/auth.rb +1 -1
  18. data/lib/lono/{configset/strategy/helpers/dsl/core.rb → builder/configset/definition/dsl/syntax/content.rb} +12 -4
  19. data/lib/lono/{configset/strategy/helpers/dsl/syntax.rb → builder/configset/definition/dsl/syntax/core.rb} +15 -9
  20. data/lib/lono/{configset/strategy/helpers/dsl → builder/configset/definition/dsl/syntax}/package.rb +1 -1
  21. data/lib/lono/builder/configset/definition/dsl/syntax.rb +5 -0
  22. data/lib/lono/{configset/strategy → builder/configset/definition}/dsl.rb +10 -14
  23. data/lib/lono/{configset/strategy → builder/configset/definition}/erb.rb +13 -16
  24. data/lib/lono/builder/configset/definition.rb +18 -0
  25. data/lib/lono/builder/configset/evaluator.rb +10 -0
  26. data/lib/lono/builder/configset/registration.rb +35 -0
  27. data/lib/lono/builder/context.rb +40 -0
  28. data/lib/lono/builder/dsl/evaluator.rb +6 -55
  29. data/lib/lono/builder/dsl/finalizer/base.rb +8 -0
  30. data/lib/lono/builder/dsl/finalizer/configsets.rb +7 -28
  31. data/lib/lono/builder/dsl/finalizer/files/base.rb +4 -0
  32. data/lib/lono/builder/dsl/finalizer/files/build.rb +58 -0
  33. data/lib/lono/builder/dsl/finalizer/files/replace.rb +31 -0
  34. data/lib/lono/builder/dsl/finalizer/files.rb +9 -0
  35. data/lib/lono/builder/dsl/finalizer/parameter_groups.rb +4 -3
  36. data/lib/lono/builder/dsl/finalizer.rb +4 -2
  37. data/lib/lono/builder/dsl/helpers/files.rb +7 -0
  38. data/lib/lono/builder/dsl/helpers/partials.rb +48 -53
  39. data/lib/lono/builder/dsl/helpers/s3.rb +1 -1
  40. data/lib/lono/builder/dsl/helpers/ssm/fetcher.rb +3 -1
  41. data/lib/lono/builder/dsl/helpers/template_file.rb +18 -6
  42. data/lib/lono/builder/dsl/helpers.rb +1 -11
  43. data/lib/lono/builder/dsl/syntax/core/resource/property_mover.rb +11 -1
  44. data/lib/lono/builder/dsl/syntax/core/squeezer.rb +16 -2
  45. data/lib/lono/builder/dsl.rb +1 -1
  46. data/lib/lono/builder/param.rb +4 -1
  47. data/lib/lono/builder/template/upload.rb +2 -15
  48. data/lib/lono/cfn/cancel.rb +5 -5
  49. data/lib/lono/cfn/deploy/iam.rb +1 -1
  50. data/lib/lono/cfn/deploy.rb +32 -3
  51. data/lib/lono/cfn/download.rb +0 -1
  52. data/lib/lono/cfn/plan/changeset.rb +2 -2
  53. data/lib/lono/cfn/plan/diff/data.rb +11 -1
  54. data/lib/lono/cfn/plan/param.rb +1 -1
  55. data/lib/lono/cfn/plan/template.rb +2 -2
  56. data/lib/lono/cfn/plan.rb +1 -0
  57. data/lib/lono/cli/abstract.rb +0 -6
  58. data/lib/lono/cli/base.rb +5 -3
  59. data/lib/lono/cli/build.rb +16 -60
  60. data/lib/lono/cli/clean.rb +3 -2
  61. data/lib/lono/cli/code.rb +12 -12
  62. data/lib/lono/cli/help/new/helper/blueprint.md +17 -0
  63. data/lib/lono/cli/help/new/helper/project.md +16 -0
  64. data/lib/lono/cli/list.rb +3 -6
  65. data/lib/lono/cli/new/blueprint.rb +3 -7
  66. data/lib/lono/cli/new/configset.rb +11 -44
  67. data/lib/lono/cli/new/helper/blueprint.rb +26 -0
  68. data/lib/lono/cli/new/helper/project.rb +24 -0
  69. data/lib/lono/cli/new/helper.rb +8 -27
  70. data/lib/lono/cli/new/sequence.rb +6 -1
  71. data/lib/lono/cli/new.rb +8 -12
  72. data/lib/lono/cli/status.rb +18 -0
  73. data/lib/lono/cli.rb +6 -9
  74. data/lib/lono/command.rb +0 -1
  75. data/lib/lono/component.rb +29 -0
  76. data/lib/lono/concerns/aws_info.rb +14 -0
  77. data/lib/lono/concerns/names.rb +9 -0
  78. data/lib/lono/configset.rb +17 -0
  79. data/lib/lono/core.rb +1 -1
  80. data/lib/lono/ext/bundler.rb +7 -0
  81. data/lib/lono/ext/core/module.rb +31 -0
  82. data/lib/lono/ext/core/object.rb +32 -0
  83. data/lib/lono/ext/core/string.rb +9 -0
  84. data/lib/lono/ext.rb +4 -0
  85. data/lib/lono/files/base.rb +12 -0
  86. data/lib/lono/files/builder.rb +37 -0
  87. data/lib/lono/files/compressor.rb +53 -0
  88. data/lib/lono/files/concerns/post_processing.rb +35 -0
  89. data/lib/lono/files/concerns/registration.rb +13 -0
  90. data/lib/lono/files/registry.rb +6 -0
  91. data/lib/lono/files.rb +37 -0
  92. data/lib/lono/importer/base.rb +1 -1
  93. data/lib/lono/inspector/summary.rb +0 -3
  94. data/lib/lono/layering/layer.rb +3 -17
  95. data/lib/lono/logger.rb +1 -3
  96. data/lib/lono/names.rb +1 -1
  97. data/lib/lono/s3/uploader.rb +29 -28
  98. data/lib/lono/seeder.rb +18 -27
  99. data/lib/lono/user_data.rb +3 -1
  100. data/lib/lono/version.rb +1 -1
  101. data/lib/lono/yamler/validator.rb +7 -22
  102. data/lib/lono.rb +8 -0
  103. data/lib/templates/configset/configset.rb +2 -16
  104. data/lib/templates/examples/configset/configset.rb +16 -0
  105. data/lib/templates/helper/%underscore_name%_helper.rb.tt +1 -1
  106. data/lono.gemspec +1 -1
  107. metadata +52 -39
  108. data/lib/lono/app_file/base.rb +0 -28
  109. data/lib/lono/app_file/build/lambda_layer/ruby_packager.rb +0 -153
  110. data/lib/lono/app_file/build/lambda_layer.rb +0 -20
  111. data/lib/lono/app_file/build.rb +0 -79
  112. data/lib/lono/app_file/registry/item.rb +0 -24
  113. data/lib/lono/app_file/registry.rb +0 -16
  114. data/lib/lono/app_file/upload.rb +0 -12
  115. data/lib/lono/builder/context/generic.rb +0 -11
  116. data/lib/lono/builder/context/loaders/load_files.rb +0 -23
  117. data/lib/lono/builder/context/loaders.rb +0 -35
  118. data/lib/lono/builder/context/params.rb +0 -6
  119. data/lib/lono/builder/context/template.rb +0 -4
  120. data/lib/lono/configset/builder.rb +0 -59
  121. data/lib/lono/configset/combiner.rb +0 -164
  122. data/lib/lono/configset/evaluate_file.rb +0 -8
  123. data/lib/lono/configset/meta/dsl.rb +0 -12
  124. data/lib/lono/configset/meta.rb +0 -19
  125. data/lib/lono/configset/s3_file/build.rb +0 -34
  126. data/lib/lono/configset/s3_file/item.rb +0 -38
  127. data/lib/lono/configset/s3_file/registry.rb +0 -12
  128. data/lib/lono/configset/s3_file/upload.rb +0 -12
  129. data/lib/lono/configset/strategy/base.rb +0 -83
  130. data/lib/lono/configset/strategy/helpers/dsl.rb +0 -8
  131. data/lib/lono/configset/strategy/helpers/erb.rb +0 -9
  132. data/lib/lono/lookup.rb +0 -12
  133. data/lib/lono/seeder/service_role.rb +0 -11
  134. data/lib/lono/utils/contexts.rb +0 -15
  135. data/lib/lono/utils/item/file_methods.rb +0 -29
  136. data/lib/lono/utils/item/zip.rb +0 -42
@@ -1,34 +0,0 @@
1
- module Lono::Configset::S3File
2
- class Build < Lono::CLI::Base
3
- include Lono::Utils::Item::Zip
4
- include Lono::Utils::Logging
5
- include Lono::Utils::Rsync
6
-
7
- def run
8
- Lono::Configset::S3File::Registry.items.each do |item|
9
- build(item)
10
- end
11
- end
12
-
13
- def build(item)
14
- copy_to_output(item)
15
- compress_output
16
- end
17
-
18
- def copy_to_output(item)
19
- src = "#{item.root}/lib/files/#{item.name}"
20
- dest = "#{Lono.root}/output/#{@blueprint.name}/configsets/#{item.configset}/files/#{item.name}"
21
- rsync(src, dest)
22
- end
23
-
24
- def compress_output
25
- Registry.items.each do |item|
26
- if item.exist?
27
- zip(item)
28
- else
29
- logger.info "WARN: #{item.src_path} does not exist. Double check that the path is correct in the s3_key call.".color(:yellow)
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,38 +0,0 @@
1
- module Lono::Configset::S3File
2
- # Holds metadata about the item in the regsitry.
3
- class Item
4
- include Lono::Utils::Item::FileMethods
5
-
6
- attr_reader :name, :configset, :root
7
- def initialize(name, options={})
8
- @name, @options = name, options
9
- @blueprint = options[:blueprint]
10
- @configset = options[:configset]
11
- @root = options[:root]
12
- @type = options[:type] || 'file'
13
- end
14
-
15
- def src_path
16
- "#{@root}/lib/files"
17
- end
18
-
19
- def output_path
20
- "#{Lono.root}/output/#{@blueprint.name}/configsets/#{@configset}/files/#{@name}"
21
- end
22
-
23
- def replacement_value
24
- aws_data = AwsData.new
25
- #
26
- # "https://s3.amazonaws.com/#{Lono::S3::Bucket.name}/#{s3_path}"
27
- # "https://lono-bucket-12di8xz5sy72z.s3-us-west-2.amazonaws.com/stuff/s3-antivirus.tgz"
28
- #
29
- # us-east-1 is special case:
30
- #
31
- # "https://lono-bucket-12di8xz5sy72z.s3.amazonaws.com/stuff/s3-antivirus.tgz"
32
- #
33
- region = ""
34
- region = "-#{aws_data.region}" unless aws_data.region == "us-east-1"
35
- "https://#{Lono::S3::Bucket.name}.s3#{region}.amazonaws.com/#{s3_path}"
36
- end
37
- end
38
- end
@@ -1,12 +0,0 @@
1
- module Lono::Configset::S3File
2
- class Registry
3
- cattr_reader :items
4
- @@items = []
5
-
6
- class << self
7
- def register(name, options)
8
- @@items << Item.new(name, options) unless @@items.detect { |i| i.name == name }
9
- end
10
- end
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- module Lono::Configset::S3File
2
- class Upload < Lono::CLI::Base
3
- def upload
4
- return unless Registry.items.size > 0
5
- logger.info "Uploading configset files..."
6
-
7
- Registry.items.each do |item|
8
- Lono::S3::Uploader.new(item.zip_file_path).upload
9
- end
10
- end
11
- end
12
- end
@@ -1,83 +0,0 @@
1
- # Subclasses must implement:
2
- #
3
- # find_evaluation_path - use to set @evaluation_path
4
- # load
5
- #
6
- # Notable instance variables:
7
- #
8
- # @evaluation_path - IE: lib/configset.rb or lib/configset.yml
9
- # @root - IE: /path/to/root/of/configset
10
- #
11
- module Lono::Configset::Strategy
12
- class Base
13
- extend Memoist
14
- include Lono::Configset::EvaluateFile
15
-
16
- # All Lono DSL Helpers and Fn - so configsets have access to instrinic functions like ref
17
- # Not including the Lono::Builder::Template::Strategy::Dsl::Evaluator::Syntax since dont need those methods
18
- #
19
- # Interesting note: must include these modules here so load_project_predefined_variables works.
20
- # Since load_project_predefined_variables calls evaluate_file / instance eval which seems to only be
21
- # able to access methods from the direct class, not inherited classes like Dsl.
22
- #
23
- # This allows methods like ref and sub to work in variables files.
24
- #
25
- include Lono::Builder::Template::Strategy::Dsl::Evaluator::Helpers
26
- include Lono::Builder::Template::Strategy::Dsl::Evaluator::Fn
27
-
28
- def initialize(options={})
29
- @options = options
30
- @configset = options[:configset]
31
- @root = options[:root]
32
- @resource = options[:resource] || "FakeResource"
33
- @blueprin = options[:blueprint]
34
- end
35
-
36
- def build
37
- @evaluation_path = find_evaluation_path # implemented by subclass
38
- copy_instance_variables
39
- load_configset_helpers
40
- init = load # implemented by subclass
41
- finish_full_structure(init)
42
- end
43
- memoize :build
44
-
45
- def finish_full_structure(init)
46
- full = {"Metadata" => {}}
47
- full["Metadata"]["AWS::CloudFormation::Init"] = init["AWS::CloudFormation::Init"]
48
- full["Metadata"]["AWS::CloudFormation::Authentication"] = authentication if authentication # only on dsl
49
- full.deep_stringify_keys!
50
- end
51
-
52
- def copy_instance_variables
53
- load_blueprint_predefined_variables
54
- load_project_predefined_variables
55
- end
56
-
57
- def load_blueprint_predefined_variables
58
- evaluate_file("#{@root}/lib/variables.rb")
59
- end
60
-
61
- def load_project_predefined_variables
62
- paths = [
63
- "#{Lono.root}/config/#{@blueprint.name}/configsets/variables.rb", # global
64
- "#{Lono.root}/config/#{@blueprint.name}/configsets/variables/#{@configset}.rb", # configset specific
65
- ]
66
- paths.each do |path|
67
- evaluate_file(path)
68
- end
69
- end
70
-
71
- def load_configset_helpers
72
- paths = Dir.glob("#{@root}/lib/helpers/**/*.rb")
73
- paths.sort_by! { |p| p.size } # load possible namespaces first
74
- paths.each do |path|
75
- filename = path.sub(%r{.*/lib/helpers/},'').sub('.rb','')
76
- module_name = filename.camelize
77
-
78
- require path
79
- self.class.send :include, module_name.constantize
80
- end
81
- end
82
- end
83
- end
@@ -1,8 +0,0 @@
1
- module Lono::Configset::Strategy::Helpers
2
- module Dsl
3
- include Auth
4
- include Core
5
- include Package
6
- include Syntax
7
- end
8
- end
@@ -1,9 +0,0 @@
1
- module Lono::Configset::Strategy::Helpers
2
- module Erb
3
- def indent(text, indentation_amount)
4
- text.split("\n").map do |line|
5
- " " * indentation_amount + line
6
- end.join("\n")
7
- end
8
- end
9
- end
data/lib/lono/lookup.rb DELETED
@@ -1,12 +0,0 @@
1
- module Lono
2
- class Lookup
3
- include Lono::Utils::Logging
4
- include Lono::Utils::Pretty
5
-
6
- def list(type)
7
- Dir.glob("#{Lono.root}/{app,vendor}/#{type}/*").each do |path|
8
- logger.info pretty_path(path)
9
- end
10
- end
11
- end
12
- end
@@ -1,11 +0,0 @@
1
- class Lono::Seeder
2
- module ServiceRole
3
- def create_service_linked_role(aws_service_name)
4
- iam.create_service_linked_role(
5
- aws_service_name: aws_service_name
6
- )
7
- rescue Aws::IAM::Errors::InvalidInput # already exist
8
- raise if ENV['LONO_DEBUG_SEED']
9
- end
10
- end
11
- end
@@ -1,15 +0,0 @@
1
- module Lono::Utils
2
- module Contexts
3
- extend Memoist
4
-
5
- def template_context
6
- Lono::Builder::Context::Template.new(@options)
7
- end
8
- memoize :template_context
9
-
10
- def params_context
11
- Lono::Builder::Context::Params.new(@options)
12
- end
13
- memoize :params_context
14
- end
15
- end
@@ -1,29 +0,0 @@
1
- module Lono::Utils::Item
2
- module FileMethods
3
- def exist?
4
- File.exist?(output_path)
5
- end
6
-
7
- def directory?
8
- File.directory?(output_path)
9
- end
10
-
11
- def file?
12
- File.file?(output_path)
13
- end
14
-
15
- def s3_path
16
- path = zip_file_path.gsub("#{Lono.root}/",'') # remove Lono.root
17
- "#{Lono.env}/#{path}"
18
- end
19
-
20
- # full path
21
- def zip_file_path
22
- "#{File.dirname(output_path)}/#{zip_file_name}"
23
- end
24
-
25
- def zip_file_name
26
- "#{File.basename(output_path)}-#{@type}-#{Lono::Md5.sum(output_path)}.zip"
27
- end
28
- end
29
- end
@@ -1,42 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Lono::Utils::Item
4
- module Zip
5
- def zip(item)
6
- if item.directory?
7
- zip_directory(item)
8
- else
9
- zip_file(item)
10
- end
11
- end
12
-
13
- def zip_file(item)
14
- path = item.output_path
15
- zip_file = item.zip_file_name
16
-
17
- logger.info "Zipping file and generating md5 named file from: #{path}"
18
- command = "cd #{File.dirname(path)} && zip -q #{zip_file} #{File.basename(path)}" # create zipfile at same level of file
19
- execute_zip(command)
20
- end
21
-
22
- def zip_directory(item)
23
- path = item.output_path
24
- zip_file = item.zip_file_name
25
-
26
- logger.info "Zipping folder and generating md5 named file from: #{path}"
27
- command = "cd #{path} && zip --symlinks -rq #{zip_file} ." # create zipfile witih directory
28
- execute_zip(command)
29
- FileUtils.mv("#{path}/#{zip_file}", "#{File.dirname(path)}/#{zip_file}") # move zip back to the parent directory
30
- end
31
-
32
- def execute_zip(command)
33
- # logger.info "=> #{command}".color(:green) # uncomment to debug
34
- `#{command}`
35
- unless $?.success?
36
- logger.info "ERROR: Fail to run #{command}".color(:red)
37
- logger.info "Maybe zip is not installed or path is incorrect?"
38
- exit 1
39
- end
40
- end
41
- end
42
- end