class Awspec::Type::EksNodegroup
Constants
- EKS_CLUSTER_TAG
-
the tags below are standard for EKS node groups instances
- EKS_NODEGROUP_TAG
- STATES
Attributes
Public Class Methods
Source
# File lib/awspec/type/eks_nodegroup.rb, line 41 def initialize(group_name) super @group_name = group_name @ec2_instances = [] @sec_groups = Set.new @sec_groups_ids = Set.new end
Calls superclass method
Public Instance Methods
Source
# File lib/awspec/type/eks_nodegroup.rb, line 66 def has_security_group?(sec_group) if @sec_groups.empty? || @sec_groups_ids.empty? ec2_instances = find_nodes ec2_instances.each do |ec2| ec2.sec_groups.each do |sg| @sec_groups.add(sg.name) @sec_groups_ids.add(sg.id) end end end @sec_groups.member?(sec_group) || @sec_groups_ids.member?(sec_group) end
Source
# File lib/awspec/type/eks_nodegroup.rb, line 53 def id @id ||= resource_via_client.nodegroup_arn if resource_via_client end
Source
# File lib/awspec/type/eks_nodegroup.rb, line 81 def ready? min_expected = resource_via_client.scaling_config.min_size ec2_instances = find_nodes running_counter = 0 ec2_instances.each do |ec2| running_counter += 1 if ec2.state.eql?('running') break if running_counter == min_expected end running_counter >= min_expected end
Source
# File lib/awspec/type/eks_nodegroup.rb, line 49 def resource_via_client @resource_via_client ||= find_eks_nodegroup(cluster, @group_name) end
Source
# File lib/awspec/type/eks_nodegroup.rb, line 61 def subnets ec2_instances = find_nodes Set.new(ec2_instances.map { |ec2| ec2.subnet_id }) end
Private Instance Methods
Source
# File lib/awspec/type/eks_nodegroup.rb, line 104 def find_nodes return @ec2_instances unless @ec2_instances.empty? result = ec2_client.describe_instances( { filters: [ { name: EKS_CLUSTER_TAG, values: [cluster] }, { name: EKS_NODEGROUP_TAG, values: [@group_name] } ] } ) result.reservations.each do |reservation| reservation.instances.each do |instance| sec_groups = [] instance.security_groups.map do |sg| sec_groups.push(EksNodeSecGroup.new(sg.group_id, sg.group_name)) end @ec2_instances.push( EksNodeEC2.new( instance.instance_id, instance.state.name, instance.subnet_id, sec_groups ) ) end end @ec2_instances end