smartos-manager 1.2.5 → 1.3.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/smartos-manager/cli.rb +24 -1
- data/lib/smartos-manager/core.rb +33 -0
- data/lib/smartos-manager/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: 08f6ffdaa4b9f3b88435b5a74308f1cba0a2e4ee
|
4
|
+
data.tar.gz: 61baf7480b232b6bfbbb01d7c8171a76dc991733
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0bfa73b194c133bf34bb9ad9daa21119361f4a2a03e139de1674cc6e0662bf1b75c5d1376f3db7cdbb0bbd5f1ce9eb2faa9d5d5ca671d67af678ecf4553587d
|
7
|
+
data.tar.gz: c60ae132875b71575055084541742fee98bf5519f1b33b3d4a6db16936f6b966f0445eb42562c26cabed1dd9e27a7bf44aff50d726201968399c4a5be00ae41e
|
data/lib/smartos-manager/cli.rb
CHANGED
@@ -8,7 +8,7 @@ class ColorPicker
|
|
8
8
|
|
9
9
|
def initialize
|
10
10
|
@colors = {}
|
11
|
-
@available_colors = %w(green yellow cyan magenta blue red)
|
11
|
+
@available_colors = %w(green yellow cyan magenta blue red gray white)
|
12
12
|
end
|
13
13
|
|
14
14
|
def get(str)
|
@@ -18,6 +18,24 @@ class ColorPicker
|
|
18
18
|
end
|
19
19
|
|
20
20
|
class AppCLI < Thor
|
21
|
+
|
22
|
+
desc "list_images", "List images available"
|
23
|
+
def list_images
|
24
|
+
registry = HostRegistry.new('smartos_hosts.toml')
|
25
|
+
ret = registry.list_images()
|
26
|
+
|
27
|
+
rev_colors = ColorPicker.new
|
28
|
+
p_img_list("UUID", "Name", "Version", "OS")
|
29
|
+
|
30
|
+
ret.each do |host, images|
|
31
|
+
puts "\n#{host.name} - #{host.address}"
|
32
|
+
images.each do |img|
|
33
|
+
# color = rev_colors.get(img.uuid)
|
34
|
+
p_img_list( img.uuid, img.name, img.version, img.os)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
21
39
|
desc "list", "List all vms"
|
22
40
|
def list
|
23
41
|
registry = HostRegistry.new('smartos_hosts.toml')
|
@@ -84,6 +102,11 @@ class AppCLI < Thor
|
|
84
102
|
str
|
85
103
|
end
|
86
104
|
|
105
|
+
# (uuid name version os)
|
106
|
+
def p_img_list(uuid, name, version, os)
|
107
|
+
puts " [ #{uuid.ljust(37)}] #{name.ljust(30)} #{version.ljust(6)} #{os}"
|
108
|
+
end
|
109
|
+
|
87
110
|
def p_vm_list(size, name, type, uuid, state, admin_ip, disk_label, *user_columns)
|
88
111
|
tmp = user_columns.map{|val| "[ #{format_generic(val).to_s.ljust(15).cyan} ]" }.join('')
|
89
112
|
|
data/lib/smartos-manager/core.rb
CHANGED
@@ -4,6 +4,7 @@ require 'net/ssh/multi'
|
|
4
4
|
require 'net/ssh/gateway'
|
5
5
|
require 'toml'
|
6
6
|
require 'size_units'
|
7
|
+
require 'json'
|
7
8
|
|
8
9
|
|
9
10
|
class SSHHost
|
@@ -63,6 +64,18 @@ class VirtualMachine
|
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
67
|
+
|
68
|
+
class Image
|
69
|
+
attr_reader :uuid, :name, :version, :os
|
70
|
+
|
71
|
+
def initialize(data = {})
|
72
|
+
@uuid = data.delete('uuid')
|
73
|
+
@name = data.delete('name')
|
74
|
+
@version = data.delete('version')
|
75
|
+
@os = data.delete('os')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
66
79
|
class HostRegistry
|
67
80
|
attr_reader :user_columns
|
68
81
|
|
@@ -144,6 +157,26 @@ class HostRegistry
|
|
144
157
|
|
145
158
|
end
|
146
159
|
|
160
|
+
|
161
|
+
def list_images
|
162
|
+
ret = {}
|
163
|
+
|
164
|
+
columns = %w(uuid name version os)
|
165
|
+
|
166
|
+
images = run_on_all("imgadm list -j")
|
167
|
+
images.each do |host, data|
|
168
|
+
|
169
|
+
json = JSON.parse(data)
|
170
|
+
|
171
|
+
ret[host] = json.map do |img_data|
|
172
|
+
Image.new( img_data['manifest'] )
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
ret
|
177
|
+
end
|
178
|
+
|
179
|
+
|
147
180
|
def diag
|
148
181
|
ret = {}
|
149
182
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartos-manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Ammous
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: toml-rb
|