Class: Lambda::MicroVMs::Project
- Inherits:
-
Object
- Object
- Lambda::MicroVMs::Project
- Defined in:
- lib/lambda/microvms/project.rb
Overview
Reads lambda-microvms project configuration from microvm.yml.
Constant Summary collapse
- DEFAULT_CONFIG =
'microvm.yml'
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#config_path ⇒ Object
readonly
Returns the value of attribute config_path.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Class Method Summary collapse
Instance Method Summary collapse
- #artifact_path ⇒ Object
- #build_context ⇒ Object
- #create_image_params(artifact_uri:) ⇒ Object
- #dockerfile ⇒ Object
- #image_arn ⇒ Object
- #image_name ⇒ Object
-
#initialize(root:, config_path:, config:) ⇒ Project
constructor
A new instance of Project.
- #lifecycle_after ⇒ Object
- #name ⇒ Object
- #payload ⇒ Object
- #profile ⇒ Object
- #region ⇒ Object
- #require!(field, value) ⇒ Object
- #role_arn ⇒ Object
- #run_params ⇒ Object
- #s3_bucket ⇒ Object
- #s3_prefix ⇒ Object
Constructor Details
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
13 14 15 |
# File 'lib/lambda/microvms/project.rb', line 13 def config @config end |
#config_path ⇒ Object (readonly)
Returns the value of attribute config_path.
13 14 15 |
# File 'lib/lambda/microvms/project.rb', line 13 def config_path @config_path end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
13 14 15 |
# File 'lib/lambda/microvms/project.rb', line 13 def root @root end |
Class Method Details
.load(path = DEFAULT_CONFIG) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/lambda/microvms/project.rb', line 15 def self.load(path = DEFAULT_CONFIG) config_path = File.(path) root = File.dirname(config_path) new(root: root, config_path: config_path, config: YAML.safe_load_file(config_path, permitted_classes: [Symbol], aliases: true) || {}) end |
Instance Method Details
#artifact_path ⇒ Object
44 |
# File 'lib/lambda/microvms/project.rb', line 44 def artifact_path = File.(fetch('build.artifact', default: "tmp/#{name}-microvm.zip"), root) |
#build_context ⇒ Object
42 |
# File 'lib/lambda/microvms/project.rb', line 42 def build_context = File.(fetch('build.context', default: '.'), root) |
#create_image_params(artifact_uri:) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/lambda/microvms/project.rb', line 56 def create_image_params(artifact_uri:) params = fetch('image.create', default: {}) || {} params = stringify_keys(params) symbolized = params.to_h { |key, value| [key.to_sym, value] } symbolized[:name] ||= image_name symbolized[:code_artifact] ||= artifact_uri symbolized end |
#dockerfile ⇒ Object
40 |
# File 'lib/lambda/microvms/project.rb', line 40 def dockerfile = File.(fetch('build.dockerfile', default: 'Dockerfile'), root) |
#image_arn ⇒ Object
36 |
# File 'lib/lambda/microvms/project.rb', line 36 def image_arn = fetch('image_arn', 'image.arn', default: nil) |
#image_name ⇒ Object
38 |
# File 'lib/lambda/microvms/project.rb', line 38 def image_name = fetch('image.name', default: name) |
#lifecycle_after ⇒ Object
50 |
# File 'lib/lambda/microvms/project.rb', line 50 def lifecycle_after = fetch('runtime.after', default: 'suspend').to_sym |
#name ⇒ Object
28 |
# File 'lib/lambda/microvms/project.rb', line 28 def name = fetch('name', default: File.basename(root)) |
#payload ⇒ Object
52 53 54 |
# File 'lib/lambda/microvms/project.rb', line 52 def payload fetch('runtime.payload', default: {}) || {} end |
#profile ⇒ Object
32 |
# File 'lib/lambda/microvms/project.rb', line 32 def profile = fetch('profile', default: ENV.fetch('AWS_PROFILE', nil)) |
#region ⇒ Object
30 |
# File 'lib/lambda/microvms/project.rb', line 30 def region = fetch('region', default: ENV.fetch('AWS_REGION', nil)) |
#require!(field, value) ⇒ Object
73 74 75 76 77 |
# File 'lib/lambda/microvms/project.rb', line 73 def require!(field, value) return value if value && value != '' raise ConfigurationError, "missing required project configuration: #{field}" end |
#role_arn ⇒ Object
34 |
# File 'lib/lambda/microvms/project.rb', line 34 def role_arn = fetch('role_arn', 'role', default: nil) |
#run_params ⇒ Object
65 66 67 68 69 70 71 |
# File 'lib/lambda/microvms/project.rb', line 65 def run_params params = stringify_keys(fetch('runtime.run', default: {}) || {}) symbolized = params.to_h { |key, value| [key.to_sym, value] } symbolized[:role_arn] ||= role_arn if role_arn symbolized[:payload] ||= payload unless payload.empty? symbolized end |
#s3_bucket ⇒ Object
46 |
# File 'lib/lambda/microvms/project.rb', line 46 def s3_bucket = fetch('deployment.bucket', 's3.bucket', default: nil) |
#s3_prefix ⇒ Object
48 |
# File 'lib/lambda/microvms/project.rb', line 48 def s3_prefix = fetch('deployment.prefix', 's3.prefix', default: "lambda-microvms/#{name}") |