Class: ClearSkies::AWS::ReservationMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/clear_skies/aws/reservation_utilization.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(reservation) ⇒ ReservationMatcher

Returns a new instance of ReservationMatcher.



35
36
37
38
39
40
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 35

def initialize(reservation)
  @reservation = reservation
  @instance_count = reservation.instance_count

  @match_count = 0
end

Instance Attribute Details

#instance_countObject (readonly)

Returns the value of attribute instance_count.



33
34
35
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 33

def instance_count
  @instance_count
end

#match_countObject (readonly)

Returns the value of attribute match_count.



33
34
35
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 33

def match_count
  @match_count
end

#reservationObject (readonly)

Returns the value of attribute reservation.



33
34
35
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 33

def reservation
  @reservation
end

Instance Method Details

#daily_costObject



46
47
48
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 46

def daily_cost
  (reservation.fixed_price * instance_count) / (reservation.duration / 1.day)
end

#expires_inObject



42
43
44
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 42

def expires_in
  @reservation.end - Time.now
end

#labelsObject



60
61
62
63
64
65
66
67
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 60

def labels
  {
      reserved_instances_id: @reservation.reserved_instances_id,
      instance_type: @reservation.instance_type,
      availability_zone: @reservation.availability_zone || "Region",
      tenancy: @reservation.instance_tenancy,
  }
end

#match(instance) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 50

def match(instance)
  return false if match_count >= instance_count
  return false unless @reservation.instance_type == instance.instance_type
  return false unless @reservation.scope == "Region" || @reservation.availability_zone == instance.placement.availability_zone
  return false unless @reservation.instance_tenancy == instance.placement.tenancy

  @match_count += 1
  return true
end