Class: OpenStax::Aws::Template
- Inherits:
-
Object
- Object
- OpenStax::Aws::Template
- Defined in:
- lib/openstax/aws/template.rb
Defined Under Namespace
Classes: TemplateInvalid
Instance Attribute Summary collapse
-
#absolute_file_path ⇒ Object
readonly
Returns the value of attribute absolute_file_path.
Class Method Summary collapse
Instance Method Summary collapse
- #basename ⇒ Object
- #body ⇒ Object
- #hash ⇒ Object
- #is_sam? ⇒ Boolean
- #parameter_names ⇒ Object
- #required_capabilities ⇒ Object
- #s3_folder ⇒ Object
- #s3_key ⇒ Object
- #s3_url ⇒ Object
- #upload_once ⇒ Object
- #valid? ⇒ Boolean
Instance Attribute Details
#absolute_file_path ⇒ Object (readonly)
Returns the value of attribute absolute_file_path.
15 16 17 |
# File 'lib/openstax/aws/template.rb', line 15 def absolute_file_path @absolute_file_path end |
Class Method Details
.from_absolute_file_path(absolute_file_path) ⇒ Object
17 18 19 |
# File 'lib/openstax/aws/template.rb', line 17 def self.from_absolute_file_path(absolute_file_path) new(absolute_file_path: absolute_file_path) end |
.from_body(body) ⇒ Object
21 22 23 |
# File 'lib/openstax/aws/template.rb', line 21 def self.from_body(body) new(body: body) end |
Instance Method Details
#basename ⇒ Object
25 26 27 |
# File 'lib/openstax/aws/template.rb', line 25 def basename File.basename(absolute_file_path) end |
#body ⇒ Object
29 30 31 |
# File 'lib/openstax/aws/template.rb', line 29 def body @body ||= File.read(absolute_file_path) end |
#hash ⇒ Object
33 34 35 |
# File 'lib/openstax/aws/template.rb', line 33 def hash json_hash || yml_hash || raise("Cannot read template #{absolute_file_path}") end |
#is_sam? ⇒ Boolean
90 91 92 |
# File 'lib/openstax/aws/template.rb', line 90 def is_sam? body.match(/Transform: AWS::Serverless/).present? end |
#parameter_names ⇒ Object
47 48 49 |
# File 'lib/openstax/aws/template.rb', line 47 def parameter_names hash["Parameters"].try(:keys) || [] end |
#required_capabilities ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/openstax/aws/template.rb', line 51 def required_capabilities has_an_iam_resource = hash["Resources"].any? do |resource_id, resource_body| resource_body["Type"].starts_with?("AWS::IAM::") end # A bit of a cop out to claim named_iam since we haven't checked # to see if any of the IAM resources have custom names, but it will # work has_an_iam_resource ? [:named_iam] : [] end |
#s3_folder ⇒ Object
70 71 72 73 74 |
# File 'lib/openstax/aws/template.rb', line 70 def s3_folder @unique_s3_folder ||= OpenStax::Aws.configuration.fixed_s3_template_folder || Time.now.utc.strftime("%Y%m%d_%H%M%S_#{SecureRandom.hex(4)}") end |
#s3_key ⇒ Object
62 63 64 65 66 67 68 |
# File 'lib/openstax/aws/template.rb', line 62 def s3_key [ OpenStax::Aws.configuration.cfn_template_bucket_folder, s3_folder, basename ].compact.join("/") end |
#s3_url ⇒ Object
76 77 78 79 |
# File 'lib/openstax/aws/template.rb', line 76 def s3_url upload_once "https://s3.amazonaws.com/#{OpenStax::Aws.configuration.cfn_template_bucket_name}/#{s3_key}" end |
#upload_once ⇒ Object
81 82 83 84 85 86 87 88 |
# File 'lib/openstax/aws/template.rb', line 81 def upload_once return if @uploaded validate upload @uploaded = true end |
#valid? ⇒ Boolean
37 38 39 40 41 42 43 44 45 |
# File 'lib/openstax/aws/template.rb', line 37 def valid? begin validate rescue TemplateInvalid return false end true end |