cumulus 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/cumulus.rb +39 -6
- data/lib/cumulus/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60a289a9fffa1c8c9bbde55e8cd0cb2164aa60bb
|
4
|
+
data.tar.gz: e0266ba59256e95f5280d12cd8d780aa8800fde4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c543b6d3c4a984a0de3934f88c209d9c7ded872b8b44e0c78fe19c3c27d5325879c05df96a353c0c15786f91abce512fdbcb85b99d793891c59267513f1fb24
|
7
|
+
data.tar.gz: 1669a03bc489bfae4cbe37c76b480022c4d792268cbacef001d059c878742e5d3d1e2c28917b27eaf97182529e4c090c09d4bd8849977f8bbc05a7f060a79643
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
Cumulus
|
2
2
|
===
|
3
3
|
|
4
|
+
[](http://badge.fury.io/rb/cumulus)
|
5
|
+
|
4
6
|
Simple CLI for analyzing cloud cost data through the Cloduability API, using the [cloudability gem](https://github.com/ColbyAley/cloudability). Caches your API key in your [.netrc](http://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-File.html) file for convenience.
|
5
7
|
|
6
8
|
## Installation
|
@@ -11,6 +13,7 @@ Simple CLI for analyzing cloud cost data through the Cloduability API, using the
|
|
11
13
|
|
12
14
|
$ cumulus budgets # Get a list of your budgets.
|
13
15
|
$ cumulus credentials # Get a list of your credentials.
|
16
|
+
$ cumulus billing --by period --count 20
|
14
17
|
$ cumulus billing # Get your 10 most recent billing reports.
|
15
18
|
$ cumulus billing --count=20 # Get your 20(N) most recent billing reports.
|
16
19
|
$ cumulus invites # Get a list of your organization user invites. (must be org admin)
|
data/lib/cumulus.rb
CHANGED
@@ -23,6 +23,7 @@ module Cumulus
|
|
23
23
|
budget.type, budget.subject]
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
26
27
|
puts Terminal::Table.new(headings: ['Predicted spend', 'Budget threshold', 'Type', 'Subject'], rows: rows)
|
27
28
|
end
|
28
29
|
|
@@ -30,26 +31,44 @@ module Cumulus
|
|
30
31
|
def credentials
|
31
32
|
credentials = Client.new(auth_token: token).credentials
|
32
33
|
rows = []
|
34
|
+
|
33
35
|
credentials.each do |cred|
|
34
36
|
rows << [cred.vendor_key, cred.nickname]
|
35
37
|
end
|
38
|
+
|
36
39
|
puts Terminal::Table.new(headings: ['Vendor key', 'Nickname'], rows: rows)
|
37
40
|
end
|
38
41
|
|
39
|
-
method_options count: :
|
42
|
+
method_options count: :numeric, default: 10, desc: 'Rows to display.'
|
43
|
+
method_options by: :string, default: :period, desc: 'Dimention to report on.'
|
44
|
+
method_options period: :string, desc: 'Period to report on. YYYY-MM-DD form. First day of the month only.'
|
40
45
|
desc 'billing', 'Displays a table of recent billing reports'
|
41
46
|
def billing
|
47
|
+
c = Client.new(auth_token: token)
|
42
48
|
count = options[:count] || 10
|
43
|
-
|
49
|
+
by = options[:by] || 'period'
|
50
|
+
|
51
|
+
if options[:period]
|
52
|
+
reports = c.billing_report(by: by, period: options[:period])
|
53
|
+
else
|
54
|
+
reports = c.billing_report(by: by)
|
55
|
+
end
|
56
|
+
|
57
|
+
reports = reports[0..count].reverse
|
58
|
+
|
59
|
+
reports.sort_by!{ |r| r.spend }.reverse! # sort by spend
|
44
60
|
rows = []
|
61
|
+
|
45
62
|
reports.each do |report|
|
46
|
-
|
63
|
+
dimention = dimention_to_attribute(by)
|
64
|
+
rows << [report[dimention], '$' + number_with_delimiter(report.spend).to_s]
|
47
65
|
end
|
48
|
-
|
66
|
+
|
67
|
+
puts Terminal::Table.new(headings: [by.capitalize, 'Spend'], rows: rows)
|
49
68
|
end
|
50
69
|
|
51
70
|
method_options state: :string
|
52
|
-
method_options role:
|
71
|
+
method_options role: :string
|
53
72
|
desc 'invites', 'Displays a table of organization invitations'
|
54
73
|
def invites
|
55
74
|
invites = Client.new(auth_token: token).organization_invitations
|
@@ -61,6 +80,7 @@ module Cumulus
|
|
61
80
|
invites.each do |invite|
|
62
81
|
rows << [invite.user.full_name, invite.user.email, invite.organization_role.label, invite.state]
|
63
82
|
end
|
83
|
+
|
64
84
|
puts Terminal::Table.new(headings: ['Name', 'Email', 'Role', 'State'], rows: rows)
|
65
85
|
end
|
66
86
|
|
@@ -86,6 +106,19 @@ module Cumulus
|
|
86
106
|
|
87
107
|
private
|
88
108
|
|
109
|
+
# Maps dimention to attribute for billing command.
|
110
|
+
#
|
111
|
+
# @param [String] dimention
|
112
|
+
# @return [Symbol] attribute
|
113
|
+
def dimention_to_attribute(dimention)
|
114
|
+
case dimention
|
115
|
+
when 'period'
|
116
|
+
:period
|
117
|
+
else
|
118
|
+
(dimention + '_name').to_sym
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
89
122
|
def token
|
90
123
|
n = Netrc.read
|
91
124
|
if !n["app.cloudability.com"].nil? && token = n["app.cloudability.com"][0]
|
@@ -123,4 +156,4 @@ module Cumulus
|
|
123
156
|
end
|
124
157
|
|
125
158
|
end
|
126
|
-
end
|
159
|
+
end
|
data/lib/cumulus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cumulus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Colby Aley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cloudability
|