clear_skies 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 82eb78bcb0b8d0e46d77a658b8a46390441f6a61
4
- data.tar.gz: 96bd95ac7fe050aab5c42705751651d465cc00fc
3
+ metadata.gz: 71658311ffdc9ed619d871de1c83e0536f973af9
4
+ data.tar.gz: a25bb06314702201194df39f39eb07456753aff6
5
5
  SHA512:
6
- metadata.gz: ea88cec568d392ecdcaa6e9907c43d6d06558348234d83e5cfc4c6258377b986c0f4e0f38a778bbc9d9e3585f4543cff62c638207061debd3b887b741df4a1cd
7
- data.tar.gz: adac7ec7203afb00fd939cabf39ea7b3e22d146946667372475506f3238727bb030e86345ae45e8ae7adaec1a9c8321c06b84c927016992183890ec9fd24b8e6
6
+ metadata.gz: ef27ddde07cc95c78d34dec964bf3251ee129d91081f7a0d2d0d1775b8a774f54a106c66dd6541dcffe69741812942ced6d56d93cd7e55dea62129f3b92eeb83
7
+ data.tar.gz: 129defa2139170c0a31133dedc835712ef912c3055070d2c2dfcd182b97760f09ae250329d1cff6677f020f317cbb08b7aa466bd6d4b81f4fd03e6844e0dab60
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- clear_skies (0.4.0)
4
+ clear_skies (0.4.1)
5
5
  awesome_print
6
6
  aws-sdk
7
7
  elasticsearch
@@ -3,25 +3,27 @@ module ClearSkies
3
3
  class ReservationUtilization < GreekFire::MeasureSet
4
4
  def items
5
5
  client = Aws::EC2::Client.new()
6
- reservations = client.describe_reserved_instances(filters: [{name: "state", values: ["active"]}]).reserved_instances.map { |x| ReservationMatcher.new(x) }
6
+ reservations = client.describe_reserved_instances.reserved_instances
7
+ active_reservations = reservations.map { |x| ReservationMatcher.new(x) if x.state == "active" }.compact
8
+ current_reservations = reservations.map { |x| ReservationMatcher.new(x) if x.start < Time.now && x.start + x.duration > Time.now && x.fixed_price > 0}.compact
7
9
 
8
10
  instance_counts = Hash.new { 0 }
9
11
 
10
-
11
12
  instance_spawns = client.describe_instances(filters: [{name: "instance-state-name", values: ["running"]}])
12
13
 
13
14
  instance_spawns.reservations.each do |spawn|
14
15
  spawn.instances.each do |instance|
15
- reservations.find { |reservation| reservation.match(instance) }
16
+ active_reservations.find { |reservation| reservation.match(instance) }
16
17
 
17
18
  instance_counts[{instance_type: instance.instance_type, availability_zone: instance.placement.availability_zone, tenancy: instance.placement.tenancy}] += 1
18
19
  end
19
20
  end
20
21
 
21
22
  [
22
- ReservationExpirationGauge.new(reservations),
23
- ReservationPurchasedGauge.new(reservations),
24
- ReservationUsageGauge.new(reservations),
23
+ ReservationExpirationGauge.new(active_reservations),
24
+ ReservationPurchasedGauge.new(active_reservations),
25
+ ReservationDailyCostGauge.new(current_reservations),
26
+ ReservationUsageGauge.new(active_reservations),
25
27
  InstancesGauge.new(instance_counts)
26
28
  ]
27
29
  end
@@ -41,6 +43,10 @@ module ClearSkies
41
43
  @reservation.end - Time.now
42
44
  end
43
45
 
46
+ def daily_cost
47
+ (reservation.fixed_price * instance_count) / (reservation.duration / 1.day)
48
+ end
49
+
44
50
  def match(instance)
45
51
  return false if match_count >= instance_count
46
52
  return false unless @reservation.instance_type == instance.instance_type
@@ -93,6 +99,22 @@ module ClearSkies
93
99
  end
94
100
  end
95
101
 
102
+ class ReservationDailyCostGauge < GreekFire::Gauge
103
+ def initialize(reservations)
104
+ super("aws_ec2_reservation_amortized_daily_price", description: "Amortized daily cost of reservation") do |labels|
105
+ labels.delete(:reservation).daily_cost
106
+ end
107
+
108
+ @reservations = reservations
109
+ end
110
+
111
+ def labels
112
+ @reservations.map do |reservation|
113
+ reservation.labels.merge(reservation: reservation)
114
+ end
115
+ end
116
+ end
117
+
96
118
  class ReservationUsageGauge < GreekFire::Gauge
97
119
  def initialize(reservations)
98
120
  super("aws_ec2_reservation_usage", description: "Number of instance reservations in use") do |labels|
@@ -1,3 +1,3 @@
1
1
  module ClearSkies
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clear_skies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Constantine