civo_cli 0.1.0 → 0.1.1
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/CHANGELOG.md +9 -1
- data/Gemfile.lock +128 -0
- data/Guardfile +43 -0
- data/LICENSE.txt +1 -1
- data/README.md +195 -14
- data/civo_cli.gemspec +15 -3
- data/exe/civo +1 -0
- data/lib/apikey.rb +50 -0
- data/lib/blueprint.rb +83 -0
- data/lib/civo_cli/version.rb +2 -2
- data/lib/civo_cli.rb +63 -2
- data/lib/config.rb +74 -0
- data/lib/domain.rb +5 -0
- data/lib/firewall.rb +5 -0
- data/lib/instance.rb +115 -0
- data/lib/network.rb +43 -0
- data/lib/quota.rb +69 -0
- data/lib/region.rb +15 -0
- data/lib/size.rb +16 -0
- data/lib/snapshot.rb +43 -0
- data/lib/sshkey.rb +38 -0
- data/lib/template.rb +96 -0
- data/lib/volume.rb +88 -0
- metadata +148 -4
data/lib/volume.rb
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
module CivoCLI
|
2
|
+
class Volume < Thor
|
3
|
+
desc "list", "list all volumes"
|
4
|
+
def list
|
5
|
+
CivoCLI::Config.set_api_auth
|
6
|
+
rows = []
|
7
|
+
Civo::Volume.all.items.each do |volume|
|
8
|
+
mounted = (volume.mountpoint.nil? || volume.mountpoint == "" ? "No" : "Yes")
|
9
|
+
rows << [volume.id, volume.name, mounted, volume.size_gb]
|
10
|
+
end
|
11
|
+
puts Terminal::Table.new headings: ['ID', 'Name', 'Mounted', 'Size (GB)'], rows: rows
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "create NAME SIZE", "create a volume of SIZE (GB) called NAME"
|
15
|
+
def create(name, size)
|
16
|
+
CivoCLI::Config.set_api_auth
|
17
|
+
size = size.to_i.to_s
|
18
|
+
volume = Civo::Volume.create(name: name, size_gb: size)
|
19
|
+
puts "Created a new #{size.colorize(:green)}GB volume called #{name.colorize(:green)} with ID #{volume.id.colorize(:green)}"
|
20
|
+
rescue Flexirest::HTTPException => e
|
21
|
+
puts e.result.reason.colorize(:red)
|
22
|
+
exit 1
|
23
|
+
end
|
24
|
+
map "new" => "create"
|
25
|
+
|
26
|
+
desc "resize ID NEW_SIZE", "resizes the volume with ID to NEW_SIZE GB"
|
27
|
+
def resize(id, new_size)
|
28
|
+
CivoCLI::Config.set_api_auth
|
29
|
+
new_size = new_size.to_i.to_s
|
30
|
+
Civo::Volume.resize(id: id, size_gb: new_size)
|
31
|
+
volume = Civo::Volume.find(id)
|
32
|
+
puts "Resized volume #{volume.name.colorize(:green)} with ID #{volume.id.colorize(:green)} to be #{new_size.colorize(:green)}GB"
|
33
|
+
rescue Flexirest::HTTPException => e
|
34
|
+
puts e.result.reason.colorize(:red)
|
35
|
+
exit 1
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "remove ID", "remove the volume with ID"
|
39
|
+
def remove(id)
|
40
|
+
CivoCLI::Config.set_api_auth
|
41
|
+
volume = Civo::Volume.find(id)
|
42
|
+
Civo::Volume.remove(id: id)
|
43
|
+
puts "Removed volume #{volume.name.colorize(:green)} with ID #{volume.id.colorize(:green)} (was #{volume.size_gb}GB)"
|
44
|
+
rescue Flexirest::HTTPException => e
|
45
|
+
puts e.result.reason.colorize(:red)
|
46
|
+
exit 1
|
47
|
+
end
|
48
|
+
map "delete" => "remove", "rm" => "remove"
|
49
|
+
|
50
|
+
desc "attach VOLUME_ID INSTANCE_ID", "connect the volume with VOLUME_ID to the instance with INSTANCE_ID"
|
51
|
+
def attach(volume_id, instance_id)
|
52
|
+
CivoCLI::Config.set_api_auth
|
53
|
+
Civo::Volume.attach(id: volume_id, instance_id: instance_id)
|
54
|
+
volume = Civo::Volume.find(volume_id)
|
55
|
+
instance = Civo::Instance.find(instance_id)
|
56
|
+
puts "Attached volume #{volume.name.colorize(:green)} with ID #{volume.id.colorize(:green)} to #{instance.hostname.colorize(:green)}"
|
57
|
+
rescue Flexirest::HTTPException => e
|
58
|
+
puts e.result.reason.colorize(:red)
|
59
|
+
exit 1
|
60
|
+
end
|
61
|
+
map "connect" => "attach", "link" => "attach"
|
62
|
+
|
63
|
+
desc "detach ID", "disconnect the volume with ID from any instance it's connected to"
|
64
|
+
def detach(id)
|
65
|
+
CivoCLI::Config.set_api_auth
|
66
|
+
Civo::Volume.detach(id: id)
|
67
|
+
volume = Civo::Volume.find(id)
|
68
|
+
puts "Detached volume #{volume.name.colorize(:green)} with ID #{volume.id.colorize(:green)}"
|
69
|
+
rescue Flexirest::HTTPException => e
|
70
|
+
puts e.result.reason.colorize(:red)
|
71
|
+
exit 1
|
72
|
+
end
|
73
|
+
map "disconnect" => "detach", "unlink" => "detach"
|
74
|
+
|
75
|
+
desc "rename ID NEW_NAME", "rename the volume with ID to have the NEW_NAME"
|
76
|
+
def rename(id, new_name)
|
77
|
+
CivoCLI::Config.set_api_auth
|
78
|
+
Civo::Volume.update(id: id, name: new_name)
|
79
|
+
volume = Civo::Volume.find(id)
|
80
|
+
puts "Renamed volume with ID #{volume.id.colorize(:green)} to be called #{volume.name.colorize(:green)}"
|
81
|
+
rescue Flexirest::HTTPException => e
|
82
|
+
puts e.result.reason.colorize(:red)
|
83
|
+
exit 1
|
84
|
+
end
|
85
|
+
|
86
|
+
default_task :list
|
87
|
+
end
|
88
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: civo_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Jeffries
|
8
|
+
- Absolute Devops Ltd
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date: 2019-
|
12
|
+
date: 2019-04-01 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -52,9 +53,136 @@ dependencies:
|
|
52
53
|
- - "~>"
|
53
54
|
- !ruby/object:Gem::Version
|
54
55
|
version: '3.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: guard
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: guard-rspec
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: terminal-notifier-guard
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: webmock
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: terminal-table
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :runtime
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: thor
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :runtime
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: colorize
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
type: :runtime
|
148
|
+
prerelease: false
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: civo
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: 1.1.14
|
161
|
+
type: :runtime
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: 1.1.14
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: json
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
type: :runtime
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - ">="
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
55
182
|
description: The official command line client for interacting with Civo's API
|
56
183
|
email:
|
57
184
|
- andy@absolutedevops.io
|
185
|
+
- hello@civo.com
|
58
186
|
executables:
|
59
187
|
- civo
|
60
188
|
extensions: []
|
@@ -65,6 +193,8 @@ files:
|
|
65
193
|
- ".travis.yml"
|
66
194
|
- CHANGELOG.md
|
67
195
|
- Gemfile
|
196
|
+
- Gemfile.lock
|
197
|
+
- Guardfile
|
68
198
|
- LICENSE.txt
|
69
199
|
- README.md
|
70
200
|
- Rakefile
|
@@ -72,8 +202,22 @@ files:
|
|
72
202
|
- bin/setup
|
73
203
|
- civo_cli.gemspec
|
74
204
|
- exe/civo
|
205
|
+
- lib/apikey.rb
|
206
|
+
- lib/blueprint.rb
|
75
207
|
- lib/civo_cli.rb
|
76
208
|
- lib/civo_cli/version.rb
|
209
|
+
- lib/config.rb
|
210
|
+
- lib/domain.rb
|
211
|
+
- lib/firewall.rb
|
212
|
+
- lib/instance.rb
|
213
|
+
- lib/network.rb
|
214
|
+
- lib/quota.rb
|
215
|
+
- lib/region.rb
|
216
|
+
- lib/size.rb
|
217
|
+
- lib/snapshot.rb
|
218
|
+
- lib/sshkey.rb
|
219
|
+
- lib/template.rb
|
220
|
+
- lib/volume.rb
|
77
221
|
homepage: https://www.civo.com/api
|
78
222
|
licenses:
|
79
223
|
- MIT
|
@@ -87,9 +231,9 @@ require_paths:
|
|
87
231
|
- lib
|
88
232
|
required_ruby_version: !ruby/object:Gem::Requirement
|
89
233
|
requirements:
|
90
|
-
- - "
|
234
|
+
- - "~>"
|
91
235
|
- !ruby/object:Gem::Version
|
92
|
-
version: '0'
|
236
|
+
version: '2.0'
|
93
237
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
238
|
requirements:
|
95
239
|
- - ">="
|