Class: Hako::Schedulers::EcsElb
- Inherits:
-
Object
- Object
- Hako::Schedulers::EcsElb
- Defined in:
- lib/hako/schedulers/ecs_elb.rb
Instance Method Summary collapse
- #describe_load_balancer ⇒ Aws::ElasticLoadBalancing::Types::LoadBalancerDescription
- #destroy ⇒ nil
- #exist? ⇒ Boolean
- #find_or_create_load_balancer(front_port) ⇒ Boolean
-
#initialize(app_id, region, elb_config, dry_run:) ⇒ EcsElb
constructor
A new instance of EcsElb.
- #load_balancer_params_for_service ⇒ Hash
- #modify_attributes ⇒ Types::ModifyLoadBalancerAttributesOutput?
- #name ⇒ String
- #show_status(ecs_lb) ⇒ nil
Constructor Details
#initialize(app_id, region, elb_config, dry_run:) ⇒ EcsElb
Returns a new instance of EcsElb.
13 14 15 16 17 18 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 13 def initialize(app_id, region, elb_config, dry_run:) @app_id = app_id @elb = Aws::ElasticLoadBalancing::Client.new(region: region) @elb_config = elb_config @dry_run = dry_run end |
Instance Method Details
#describe_load_balancer ⇒ Aws::ElasticLoadBalancing::Types::LoadBalancerDescription
31 32 33 34 35 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 31 def describe_load_balancer @elb.describe_load_balancers(load_balancer_names: [name]).load_balancer_descriptions[0] rescue Aws::ElasticLoadBalancing::Errors::LoadBalancerNotFound nil end |
#destroy ⇒ nil
82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 82 def destroy if exist? if @dry_run Hako.logger.info("@elb.delete_load_balancer(load_balancer_name: #{name})") else @elb.delete_load_balancer(load_balancer_name: name) Hako.logger.info "Deleted ELB #{name}" end else Hako.logger.info "ELB #{name} doesn't exist" end end |
#exist? ⇒ Boolean
96 97 98 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 96 def exist? describe_load_balancer != nil end |
#find_or_create_load_balancer(front_port) ⇒ Boolean
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 39 def find_or_create_load_balancer(front_port) unless @elb_config return false end unless exist? listeners = @elb_config.fetch('listeners').map do |l| { protocol: l.fetch('protocol'), load_balancer_port: l.fetch('load_balancer_port'), instance_port: front_port, ssl_certificate_id: l.fetch('ssl_certificate_id', nil), } end = @elb_config.fetch('tags', {}).map { |k, v| { key: k, value: v.to_s } } lb = @elb.create_load_balancer( load_balancer_name: name, listeners: listeners, subnets: @elb_config.fetch('subnets'), security_groups: @elb_config.fetch('security_groups'), scheme: @elb_config.fetch('scheme', nil), tags: .empty? ? nil : , ) Hako.logger.info "Created ELB #{lb.dns_name} with instance_port=#{front_port}" end true end |
#load_balancer_params_for_service ⇒ Hash
106 107 108 109 110 111 112 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 106 def load_balancer_params_for_service { load_balancer_name: name, container_name: @elb_config.fetch('container_name', 'front'), container_port: @elb_config.fetch('container_port', 80), } end |
#modify_attributes ⇒ Types::ModifyLoadBalancerAttributesOutput?
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 68 def modify_attributes if @elb_config.key?('cross_zone_load_balancing') @elb.modify_load_balancer_attributes( load_balancer_name: name, load_balancer_attributes: { cross_zone_load_balancing: { enabled: @elb_config['cross_zone_load_balancing'], } } ) end end |
#name ⇒ String
101 102 103 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 101 def name @elb_config.fetch('load_balancer_name', "hako-#{@app_id}") end |
#show_status(ecs_lb) ⇒ nil
22 23 24 25 26 27 28 |
# File 'lib/hako/schedulers/ecs_elb.rb', line 22 def show_status(ecs_lb) lb = describe_load_balancer lb.listener_descriptions.each do |ld| l = ld.listener puts " #{lb.dns_name}:#{l.load_balancer_port} -> #{ecs_lb.container_name}:#{ecs_lb.container_port}" end end |