class KnuckleCluster::EcsAgentRegistry
Attributes
aws_client_config[R]
cluster_name[R]
Public Class Methods
new(aws_client_config:, cluster_name:, hide: {})
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 10 def initialize(aws_client_config:, cluster_name:, hide: {}) @aws_client_config = aws_client_config @cluster_name = cluster_name @hide = hide end
Public Instance Methods
agents()
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 16 def agents @agents ||= load_agents end
find_by(container_instance_arn:)
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 20 def find_by(container_instance_arn:) agents_by_container_instance_arn[container_instance_arn]&.first end
output_agents()
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 24 def output_agents tp agents, :index, :instance_id, # :public_ip, # :private_ip, # :availability_zone, { task: { display_method: 'tasks.name', width: 999 } }, { container: { display_method: 'tasks.containers.name', width: 999 } } end
Private Instance Methods
agents_by_container_instance_arn()
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 67 def agents_by_container_instance_arn @agents_by_container_instance_arn ||= agents.group_by(&:container_instance_arn) end
ec2_client()
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 80 def ec2_client @ec2_client ||= ::Aws::EC2::Client.new(aws_client_config) end
ecs_client()
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 84 def ecs_client @ecs_client ||= ::Aws::ECS::Client.new(aws_client_config) end
load_agents()
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 41 def load_agents container_instance_arns = ecs_client.list_container_instances(cluster: cluster_name) .container_instance_arns return [] if container_instance_arns.empty? ecs_instances_by_id = ecs_client.describe_container_instances( cluster: cluster_name, container_instances: container_instance_arns, ).container_instances.group_by(&:ec2_instance_id) ec2_instance_reservations = ec2_client.describe_instances(instance_ids: ecs_instances_by_id.keys) .reservations ec2_instance_reservations.map(&:instances).flatten.map.with_index do |instance, index| Agent.new( index: index + 1, instance_id: instance[:instance_id], public_ip: instance[:public_ip_address], private_ip: instance[:private_ip_address], availability_zone: instance.dig(:placement, :availability_zone), container_instance_arn: ecs_instances_by_id[instance[:instance_id]].first.container_instance_arn, task_registry: task_registry, ) end end
task_registry()
click to toggle source
# File lib/knuckle_cluster/ecs_agent_registry.rb, line 71 def task_registry @task_registry ||= TaskRegistry.new( ecs_client: ecs_client, cluster_name: cluster_name, agent_registry: self, hide: @hide, ) end