nex_client 0.7.0 → 0.8.0
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/lib/nex_client/addon.rb +10 -1
- data/lib/nex_client/cli.rb +25 -1
- data/lib/nex_client/commands/addons.rb +38 -1
- data/lib/nex_client/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: e7e474dbd2d706429e88588528a051b2a6ad13b9
|
4
|
+
data.tar.gz: 752ea05fe2035617a3109c9f40561f608c22b358
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ddb0bde5e0b11d5638d11813c6e09f88fd8a57821ab1a2c1e1eb2c6aef91f56274b676f70ad62552344a662b4fd907c8f576c6bab2a5450395efa8e75da9d556
|
7
|
+
data.tar.gz: 61194baa999f2fdf7cedbb34b981f8bc0bbc28369ec534e7eff9a0f0f02d511f34f0bb05e5ea0a2f97d993a65d61ab3edec90dab7e579267cb4ee445f0785061
|
data/lib/nex_client/addon.rb
CHANGED
@@ -4,7 +4,16 @@ module NexClient
|
|
4
4
|
property :created_at, type: :time
|
5
5
|
property :updated_at, type: :time
|
6
6
|
|
7
|
-
#
|
7
|
+
# PATCH <api_root>/addons/:id/restart
|
8
|
+
custom_endpoint :restart, on: :member, request_method: :patch
|
9
|
+
|
10
|
+
# GET <api_root>/addons/:id/logs
|
8
11
|
custom_endpoint :logs, on: :member, request_method: :get
|
12
|
+
|
13
|
+
# PATCH <api_root>/addons/:id/scale_up
|
14
|
+
custom_endpoint :scale_up, on: :member, request_method: :patch
|
15
|
+
|
16
|
+
# PATCH <api_root>/addons/:id/scale_down
|
17
|
+
custom_endpoint :scale_down, on: :member, request_method: :patch
|
9
18
|
end
|
10
19
|
end
|
data/lib/nex_client/cli.rb
CHANGED
@@ -33,7 +33,7 @@ module NexClient
|
|
33
33
|
command :'addons:create' do |c|
|
34
34
|
c.syntax = 'nex-cli addons:create SERVICE APP_NAME'
|
35
35
|
c.summary = 'Create addons'
|
36
|
-
c.description = 'Create addons for your apps'
|
36
|
+
c.description = 'Create addons for your apps. Available addons: mysql | redis | mongo26'
|
37
37
|
c.example 'create mysql addon for myapp', 'nex-cli addons:create mysql myapp'
|
38
38
|
c.example 'create redis addon for myapp', 'nex-cli addons:create redis myapp'
|
39
39
|
c.action do |args, options|
|
@@ -51,6 +51,18 @@ module NexClient
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
+
command :'addons:down' do |c|
|
55
|
+
c.syntax = 'nex-cli addons:down ADDON_NAME [options]'
|
56
|
+
c.summary = 'Scale addons down'
|
57
|
+
c.description = 'Bring nodes down for a given addon'
|
58
|
+
c.example 'scale myaddon down by removing one node', 'nex-cli addons:down myaddon'
|
59
|
+
c.example 'scale myaddon down by removing two nodes', 'nex-cli addons:down myaddon --count 2'
|
60
|
+
c.option '--count NUMBER', String, 'number of nodes to bring down'
|
61
|
+
c.action do |args, options|
|
62
|
+
NexClient::Commands::Addons.scale(:down,args,options)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
54
66
|
command :'addons:logs' do |c|
|
55
67
|
c.syntax = 'nex-cli addons:logs ADDON_NAME [options]'
|
56
68
|
c.summary = 'Gather addon logs'
|
@@ -73,6 +85,18 @@ module NexClient
|
|
73
85
|
end
|
74
86
|
end
|
75
87
|
|
88
|
+
command :'addons:up' do |c|
|
89
|
+
c.syntax = 'nex-cli addons:up ADDON_NAME [options]'
|
90
|
+
c.summary = 'Scale addons up'
|
91
|
+
c.description = 'Add nodes to a given addon'
|
92
|
+
c.example 'scale myaddon up by adding one node', 'nex-cli addons:up myaddon'
|
93
|
+
c.example 'scale myaddon up by adding two nodes', 'nex-cli addons:up myaddon --count 2'
|
94
|
+
c.option '--count NUMBER', String, 'number of nodes to bring up'
|
95
|
+
c.action do |args, options|
|
96
|
+
NexClient::Commands::Addons.scale(:up,args,options)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
76
100
|
command :apps do |c|
|
77
101
|
c.syntax = 'nex-cli apps [options]'
|
78
102
|
c.summary = 'Manage apps'
|
@@ -4,8 +4,9 @@ module NexClient
|
|
4
4
|
module Addons
|
5
5
|
extend Helpers
|
6
6
|
|
7
|
+
SCALING_DIRECTIONS = [:up,:down]
|
7
8
|
ADDONS_TITLE = "Addons".colorize(:red)
|
8
|
-
ADDONS_HEADERS = ['id','name','status','service','app'].map(&:upcase)
|
9
|
+
ADDONS_HEADERS = ['id','name','status','service','nodes','app'].map(&:upcase)
|
9
10
|
|
10
11
|
def self.list(args,opts)
|
11
12
|
filters = {}
|
@@ -105,6 +106,35 @@ module NexClient
|
|
105
106
|
success("Successfully destroyed addon: #{name}")
|
106
107
|
end
|
107
108
|
|
109
|
+
def self.scale(direction,args,opts)
|
110
|
+
return false unless SCALING_DIRECTIONS.include?(direction.to_sym)
|
111
|
+
name = args.first
|
112
|
+
e = NexClient::Addon.find(name: name).first
|
113
|
+
|
114
|
+
# Display error
|
115
|
+
unless e
|
116
|
+
error("Error! Could not find addon: #{name}")
|
117
|
+
return false
|
118
|
+
end
|
119
|
+
|
120
|
+
# Scaling attributes
|
121
|
+
attrs = {}
|
122
|
+
count = opts.count || 1
|
123
|
+
attrs[:count] = count
|
124
|
+
attrs[:preferred_region] = opts.region if opts.region.present?
|
125
|
+
|
126
|
+
# Perform
|
127
|
+
e.send("scale_#{direction}",{data: { attributes: attrs } })
|
128
|
+
|
129
|
+
# Display errors if any
|
130
|
+
if e.errors.any?
|
131
|
+
display_record_errors(e)
|
132
|
+
return false
|
133
|
+
end
|
134
|
+
|
135
|
+
success("Successfully requested to scale #{name} #{direction} by #{count} #{'node'.pluralize(count)}...")
|
136
|
+
end
|
137
|
+
|
108
138
|
def self.display_addons(list)
|
109
139
|
table = Terminal::Table.new title: ADDONS_TITLE, headings: ADDONS_HEADERS do |t|
|
110
140
|
[list].flatten.compact.each do |e|
|
@@ -117,11 +147,13 @@ module NexClient
|
|
117
147
|
|
118
148
|
def self.format_record(record)
|
119
149
|
app = self.format_app(record)
|
150
|
+
node_count = self.format_node_count(record)
|
120
151
|
[
|
121
152
|
record.id,
|
122
153
|
record.name,
|
123
154
|
record.status,
|
124
155
|
record.service,
|
156
|
+
node_count,
|
125
157
|
app
|
126
158
|
]
|
127
159
|
end
|
@@ -130,6 +162,11 @@ module NexClient
|
|
130
162
|
return '-' unless a = record.app
|
131
163
|
a.name
|
132
164
|
end
|
165
|
+
|
166
|
+
def self.format_node_count(record)
|
167
|
+
return '-' unless record.node_count && record.max_node_count
|
168
|
+
"#{record.node_count}/#{record.max_node_count}"
|
169
|
+
end
|
133
170
|
end
|
134
171
|
end
|
135
172
|
end
|
data/lib/nex_client/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nex_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arnaud Lachaume
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_api_client
|