Class: Jets::Cfn::Resource::Nested::Api::Deployment

Inherits:
Base
  • Object
show all
Defined in:
lib/jets/cfn/resource/nested/api/deployment.rb

Instance Method Summary collapse

Methods inherited from Base

#initialize, #outputs, #template_filename, #template_url

Methods inherited from Base

#attributes, #logical_id, #outputs, #permission, #properties, #replacements, #replacer, #standarize, #template, truncate_id, #type

Methods included from Util::Camelize

#camelize

Constructor Details

This class inherits a constructor from Jets::Cfn::Resource::Nested::Base

Instance Method Details

#definitionObject

interface method



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/jets/cfn/resource/nested/api/deployment.rb', line 4

def definition
  {
    deployment_id => {
      Type: "AWS::CloudFormation::Stack",
      Properties: {
        TemplateURL: template_url,
        Parameters: parameters,
      },
      DependsOn: depends_on,
    }
  }
end

#depends_onObject



21
22
23
# File 'lib/jets/cfn/resource/nested/api/deployment.rb', line 21

def depends_on
  depends_on_controllers + depends_on_api_methods
end

#depends_on_api_methodsObject



25
26
27
28
29
30
# File 'lib/jets/cfn/resource/nested/api/deployment.rb', line 25

def depends_on_api_methods
  pages = Jets::Cfn::Builder::Api::Pages::Methods.pages
  pages.map do |page|
    "ApiMethods#{page.number}"
  end
end

#depends_on_controllersObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/jets/cfn/resource/nested/api/deployment.rb', line 32

def depends_on_controllers
  controller_logical_ids = []
  expression = "#{Jets::Names.templates_folder}/*_controller*"
  Dir.glob(expression).each do |path|
    next unless File.file?(path)

    # map the path to a camelized logical_id. Example:
    #   /tmp/jets/demo/templates/demo-dev-2-posts_controller.yml to
    #   PostsController
    regexp = Regexp.new(".*#{Jets::Names.templates_folder}/app-")
    controller_name = path.sub(regexp, '').sub('.yml', '')
    controller_logical_id = controller_name.underscore.camelize
    controller_logical_ids << controller_logical_id
  end
  controller_logical_ids
end

#deployment_idObject



49
50
51
# File 'lib/jets/cfn/resource/nested/api/deployment.rb', line 49

def deployment_id
  Jets::Cfn::Resource::ApiGateway::Deployment.logical_id
end

#parametersObject



17
18
19
# File 'lib/jets/cfn/resource/nested/api/deployment.rb', line 17

def parameters
  { RestApi: "!GetAtt ApiGateway.Outputs.RestApi" }
end