Class: ClearSkies::AWS::ReservationMatcher
- Inherits:
-
Object
- Object
- ClearSkies::AWS::ReservationMatcher
- Defined in:
- lib/clear_skies/aws/reservation_utilization.rb
Instance Attribute Summary collapse
-
#instance_count ⇒ Object
readonly
Returns the value of attribute instance_count.
-
#match_count ⇒ Object
readonly
Returns the value of attribute match_count.
-
#reservation ⇒ Object
readonly
Returns the value of attribute reservation.
Instance Method Summary collapse
- #daily_cost ⇒ Object
- #expires_in ⇒ Object
-
#initialize(reservation) ⇒ ReservationMatcher
constructor
A new instance of ReservationMatcher.
- #labels ⇒ Object
- #match(instance) ⇒ Object
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_count ⇒ Object (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_count ⇒ Object (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 |
#reservation ⇒ Object (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_cost ⇒ Object
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_in ⇒ Object
42 43 44 |
# File 'lib/clear_skies/aws/reservation_utilization.rb', line 42 def expires_in @reservation.end - Time.now end |
#labels ⇒ Object
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 |