class RenderCFN::LoadBalancer

Public Class Methods

new( arguments) click to toggle source
# File lib/renderCFN/applicationLoadBalancerV2.rb, line 12
def initialize( arguments) #name, lbPort, instancePort, idleTimeout = 60)
  @idleTimeout = arguments[:idleTimeout] or 60
  @name = "#{arguments[:name]}ElasticLoadBalancer"
  @awsObject = { 
    @name => {
      'Type' => 'AWS::ElasticLoadBalancing::LoadBalancer', 
      'Properties' => {
        'SecurityGroups' => [],
        'Scheme' => arguments[:scheme] || 'internal',
        'CrossZone' => true,
        'ConnectionSettings' => {
          'IdleTimeout' => @idleTimeout
        },
        'ConnectionDrainingPolicy' => { 'Enabled' => true, 'Timeout' => 60 },
        'Subnets' => arguments[:subnetList], 
        'Tags' => [
          { 'Key' => 'application', 'Value' => arguments[:serviceTitle] },
          { 'Key' => 'StackName', 'Value' => @@stackName },
        ],
        'HealthCheck' => {
          'Target' => "HTTP:#{arguments[:instancePort]}/status-check",
          'Interval' => 6,
          'Timeout' => 5,
          'UnhealthyThreshold' => 2,
          'HealthyThreshold' => 2,
        },
        'Listeners' => [
          {
            'Protocol' => 'HTTP', 
            'LoadBalancerPort' => 80, 
            'InstancePort' => arguments[:instancePort]
          },
          #{
          #  'Protocol' => 'HTTP',
          #  'LoadBalancerPort' => 9876,
          #  'InstancePort' => 9876
          #}
        ]
      }
    }
  }
  if arguments[:lbPort] != 80
    @awsObject['Properties']['Listeners'].push (
        {
          'Protocol' => 'HTTP', 
          'LoadBalancerPort' => arguments[:lbport], 
          'InstancePort' => arguments[:instancePort]
        }
    )
  end

end

Public Instance Methods

addListener( lbPort, instancePort) click to toggle source
# File lib/renderCFN/applicationLoadBalancerV2.rb, line 79
def addListener( lbPort, instancePort)
  @awsObject[@name]['Properties']['Listeners'].push (
    {
      'Protocol' => 'HTTP', 
      'LoadBalancerPort' => lbPort, 
      'InstancePort' => instancePort
    }
  )
end
addSecurityGroup( securityGroup) click to toggle source
# File lib/renderCFN/applicationLoadBalancerV2.rb, line 75
def addSecurityGroup( securityGroup)
  @awsObject[@name]['Properties']['SecurityGroups'].push( {'Ref' => "#{securityGroup}"} )
end
addSslListener( lbPort, instancePort, certificate) click to toggle source
# File lib/renderCFN/applicationLoadBalancerV2.rb, line 89
def addSslListener( lbPort, instancePort, certificate)
  @awsObject[@name]['Properties']['Listeners'].push (
    {
      'Protocol' => 'HTTPS', 
      'LoadBalancerPort' => lbPort, 
      'InstancePort' => instancePort,
      'SSLCertificateId' => certificate
    }
  )
end
createLoadBalancer() click to toggle source
# File lib/renderCFN/applicationLoadBalancerV2.rb, line 65
def createLoadBalancer()
  # create load balancer via sdk
  # store load balancer ARN for use when attaching listeners
  # How to get it to associate with the stack so it's deleted on stack deletion?
end
modifyHealthCheck( newHealthCheck) click to toggle source
# File lib/renderCFN/applicationLoadBalancerV2.rb, line 71
def modifyHealthCheck( newHealthCheck)
  @awsObject[@name]['Properties']['HealthCheck']['Target'] = newHealthCheck
end