class KnuckleCluster::SpotRequestInstanceRegistry
Attributes
aws_client_config[R]
spot_request_id[R]
Public Class Methods
new(aws_client_config:, spot_request_id:)
click to toggle source
# File lib/knuckle_cluster/spot_request_instance_registry.rb, line 9 def initialize(aws_client_config:, spot_request_id:) @aws_client_config = aws_client_config @spot_request_id = spot_request_id end
Public Instance Methods
agents()
click to toggle source
# File lib/knuckle_cluster/spot_request_instance_registry.rb, line 14 def agents @agents ||= load_agents end
output_agents()
click to toggle source
# File lib/knuckle_cluster/spot_request_instance_registry.rb, line 18 def output_agents tp agents, :index, :instance_id, # :public_ip, :private_ip, :availability_zone end
Private Instance Methods
ec2_client()
click to toggle source
# File lib/knuckle_cluster/spot_request_instance_registry.rb, line 48 def ec2_client @ec2_client ||= ::Aws::EC2::Client.new(aws_client_config) end
load_agents()
click to toggle source
# File lib/knuckle_cluster/spot_request_instance_registry.rb, line 31 def load_agents spot_fleet_instances = ec2_client.describe_spot_fleet_instances(spot_fleet_request_id: spot_request_id) instance_ids = spot_fleet_instances.active_instances.map(&:instance_id) instance_reservations = ec2_client.describe_instances(instance_ids: instance_ids).reservations 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), ) end end