jcf 0.0.10 → 0.0.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +23 -1
- data/lib/jcf/cf/services.rb +21 -0
- data/lib/jcf/cli/commands/cf/metrics.rb +1 -1
- data/lib/jcf/cli/commands/cf/services.rb +27 -0
- data/lib/jcf/cli/commands.rb +1 -0
- data/lib/jcf/cli/output_formatters/text.rb +13 -1
- data/lib/jcf/version.rb +1 -1
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9479fc4468d9132f60c15f22782820798f35ae649d5bb09d575e7b051d77ddda
|
4
|
+
data.tar.gz: 4090a17eb90884a706b11ea865805a4a99ada9b8bfbbfc1206fd6ddbf21e4af6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06fc37725e7ae5ad94b16e5e4a365ecd69760c45ca7e21922d81ca57e24e826cd43328d67d50e3b7bce5366a5421d09e99eb4fe03529d05562b9a6d4463ca546
|
7
|
+
data.tar.gz: 2b508ca2c6441a640f13aa03fa05fb19438467f0bfa053e5cd23f37b8b861176f9648f22746cc2576a73c371e641e50684e02c0960da1e39401bfc89b676a1fc
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## [0.0.11] - 2023-10-12
|
2
|
+
|
3
|
+
- Add a tree output for a new command `jcf services NAME` that will show all the offerings and instances for that broker. In a tree. Because trees are cool.
|
4
|
+
|
1
5
|
## [0.0.10] - 2023-10-03
|
2
6
|
|
3
7
|
- Added the template parsing options to metrics command
|
data/README.md
CHANGED
@@ -1,8 +1,25 @@
|
|
1
|
-
![tests](https://github.com/fearoffish/paas-org-metric-gathering-gem/actions/workflows/main.yml/badge.svg)
|
1
|
+
[![tests](https://github.com/fearoffish/paas-org-metric-gathering-gem/actions/workflows/main.yml/badge.svg)](https://github.com/fearoffish/paas-org-metric-gathering-gem/actions)
|
2
2
|
[![Gem Version](https://badge.fury.io/rb/jcf.svg)](https://badge.fury.io/rb/jcf)
|
3
3
|
|
4
4
|
# Jcf
|
5
5
|
|
6
|
+
## What is it?
|
7
|
+
|
8
|
+
If you use CloudFoundry you'll know that some commands/queries require you to use `cf curl` and that can get a little tedious. This gem is a wrapper around `cf curl` to make it easier to query the CloudFoundry API, as well as being able to query the CloudWatch metrics for the AWS services that are used by the CF services.
|
9
|
+
|
10
|
+
Some handy features:
|
11
|
+
|
12
|
+
```
|
13
|
+
jcf u jamie # find all users with a partial username of jamie
|
14
|
+
jcf o foo # find all orgs with a partial name of foo
|
15
|
+
jcf sb s3 # find all service brokers with a partial name of s3
|
16
|
+
jcf so bucket # find all service offerings with a partial name of bucket
|
17
|
+
jcf sp medium # find all service plans with a partial name of medium
|
18
|
+
|
19
|
+
# find all metrics for the rds-broker service, postgres offering, output it to a csv file
|
20
|
+
jcf m postgres -t 'rdsbroker-{guid}' -o admin -f csv --ouput postgres-metrics.csv
|
21
|
+
```
|
22
|
+
|
6
23
|
## Installation
|
7
24
|
|
8
25
|
```sh
|
@@ -134,3 +151,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
134
151
|
## Code of Conduct
|
135
152
|
|
136
153
|
Everyone interacting in the Jcf project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/fearoffish/paas-org-metric-gathering-gem/blob/main/CODE_OF_CONDUCT.md).
|
154
|
+
|
155
|
+
## Credits
|
156
|
+
|
157
|
+
- Hanami for the [CLI framework](https://hanamirb.org/guides/1.3/cli/overview/)
|
158
|
+
I borrowed some ideas from there. Thanks!
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base"
|
4
|
+
|
5
|
+
module JCF
|
6
|
+
module CF
|
7
|
+
class Services
|
8
|
+
def self.first(name:)
|
9
|
+
# Find the broker, then find all offerings for that broker, then all plans
|
10
|
+
# { broker: { offerings: { plans: [] } }
|
11
|
+
# e.g. { "p-mysql (guid)": { "10mb (guid)": [], "100mb (guid)": [] } }
|
12
|
+
broker = ServiceBroker.first(name: name)
|
13
|
+
offerings = ServiceOffering.all(service_broker_guids: broker.guid).map do |offering|
|
14
|
+
plans = ServicePlan.all(service_offering_guids: offering.guid)
|
15
|
+
{ offering.to_s => plans }
|
16
|
+
end
|
17
|
+
{ broker.to_s => offerings }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -14,7 +14,7 @@ module JCF
|
|
14
14
|
module Commands
|
15
15
|
module CF
|
16
16
|
class Metrics < Command
|
17
|
-
argument :offering, required: true, values: %w[postgres aws-s3-bucket],
|
17
|
+
argument :offering, required: true, values: %w[postgres mysql aws-s3-bucket],
|
18
18
|
desc: "Choose a service instance offering to query"
|
19
19
|
|
20
20
|
option :template, aliases: ["-t"], required: true, type: :string,
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "shellwords"
|
4
|
+
require_relative "../../errors"
|
5
|
+
require "tty-tree"
|
6
|
+
|
7
|
+
module JCF
|
8
|
+
module CLI
|
9
|
+
module Commands
|
10
|
+
module CF
|
11
|
+
class Services < Command
|
12
|
+
argument :broker, required: false, desc: "Broker name"
|
13
|
+
|
14
|
+
def call(broker: nil, **)
|
15
|
+
# gather all service offerings and plans for a single broker
|
16
|
+
if broker
|
17
|
+
out.puts formatter.format(JCF::CF::Services.first(name: broker), tree: true)
|
18
|
+
else
|
19
|
+
# TODO: this is a stub, it should be a list of all brokers
|
20
|
+
# out.puts formatter.format(JCF::CF::Organization.all)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/jcf/cli/commands.rb
CHANGED
@@ -12,6 +12,7 @@ module JCF
|
|
12
12
|
register "organizations", Commands::CF::Organizations, aliases: %w[o orgs organization]
|
13
13
|
register "spaces", Commands::CF::Spaces, aliases: %w[s space]
|
14
14
|
register "users", Commands::CF::Users, aliases: %w[u user]
|
15
|
+
register "services", Commands::CF::Services
|
15
16
|
register "service_brokers", Commands::CF::ServiceBrokers, aliases: %w[sb service_broker]
|
16
17
|
register "service_offerings", Commands::CF::ServiceOfferings, aliases: %w[so service_offering]
|
17
18
|
register "service_instances", Commands::CF::ServiceInstances, aliases: %w[si service_instance]
|
@@ -7,9 +7,17 @@ module JCF
|
|
7
7
|
module OutputFormatters
|
8
8
|
class Text
|
9
9
|
class << self
|
10
|
-
def format(data)
|
10
|
+
def format(data, tree: false)
|
11
11
|
return "" if data.nil?
|
12
12
|
|
13
|
+
if tree
|
14
|
+
render_tree(data)
|
15
|
+
else
|
16
|
+
render_data(data)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def render_data(data)
|
13
21
|
keys = collect_keys(data)
|
14
22
|
values = collect_values(data)
|
15
23
|
|
@@ -17,6 +25,10 @@ module JCF
|
|
17
25
|
table.render(:unicode, resize: true)
|
18
26
|
end
|
19
27
|
|
28
|
+
def render_tree(data)
|
29
|
+
TTY::Tree.new(data).render
|
30
|
+
end
|
31
|
+
|
20
32
|
def collect_values(data)
|
21
33
|
if data.is_a?(Array)
|
22
34
|
data.map { |d| d.attributes.values.collect(&:to_s) }
|
data/lib/jcf/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jcf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamie van Dyke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -240,6 +240,20 @@ dependencies:
|
|
240
240
|
- - "~>"
|
241
241
|
- !ruby/object:Gem::Version
|
242
242
|
version: 0.12.0
|
243
|
+
- !ruby/object:Gem::Dependency
|
244
|
+
name: tty-tree
|
245
|
+
requirement: !ruby/object:Gem::Requirement
|
246
|
+
requirements:
|
247
|
+
- - "~>"
|
248
|
+
- !ruby/object:Gem::Version
|
249
|
+
version: 0.4.0
|
250
|
+
type: :runtime
|
251
|
+
prerelease: false
|
252
|
+
version_requirements: !ruby/object:Gem::Requirement
|
253
|
+
requirements:
|
254
|
+
- - "~>"
|
255
|
+
- !ruby/object:Gem::Version
|
256
|
+
version: 0.4.0
|
243
257
|
description:
|
244
258
|
email:
|
245
259
|
- me@fearof.fish
|
@@ -273,6 +287,7 @@ files:
|
|
273
287
|
- lib/jcf/cf/service_instance.rb
|
274
288
|
- lib/jcf/cf/service_offering.rb
|
275
289
|
- lib/jcf/cf/service_plan.rb
|
290
|
+
- lib/jcf/cf/services.rb
|
276
291
|
- lib/jcf/cf/space.rb
|
277
292
|
- lib/jcf/cf/user.rb
|
278
293
|
- lib/jcf/cli.rb
|
@@ -286,6 +301,7 @@ files:
|
|
286
301
|
- lib/jcf/cli/commands/cf/service_instances.rb
|
287
302
|
- lib/jcf/cli/commands/cf/service_offerings.rb
|
288
303
|
- lib/jcf/cli/commands/cf/service_plans.rb
|
304
|
+
- lib/jcf/cli/commands/cf/services.rb
|
289
305
|
- lib/jcf/cli/commands/cf/spaces.rb
|
290
306
|
- lib/jcf/cli/commands/cf/users.rb
|
291
307
|
- lib/jcf/cli/commands/version.rb
|