opennebula-cli 7.2.0 → 7.2.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/bin/onevm +1 -1
- data/lib/command_parser.rb +134 -125
- data/lib/load_opennebula_paths.rb +5 -0
- data/lib/ods_helper.rb +541 -0
- data/lib/one_helper/oneacct_helper.rb +116 -108
- data/lib/one_helper/onedatastore_helper.rb +86 -79
- data/lib/one_helper/onemarket_helper.rb +58 -57
- data/lib/one_helper/onequota_helper.rb +239 -189
- data/lib/one_helper/onesecgroup_helper.rb +86 -84
- data/lib/one_helper/onetemplate_helper.rb +63 -63
- data/lib/one_helper/onevdc_helper.rb +44 -44
- data/lib/one_helper/onevm_helper.rb +5 -7
- data/lib/one_helper/onevmgroup_helper.rb +64 -62
- data/lib/one_helper/onevntemplate_helper.rb +42 -39
- data/lib/one_helper/onevrouter_helper.rb +85 -86
- data/lib/one_helper/onezone_helper.rb +97 -100
- data/lib/one_helper.rb +88 -69
- data/share/schemas/xsd/acct.xsd +3 -104
- data/share/schemas/xsd/cluster.xsd +4 -21
- data/share/schemas/xsd/datastore.xsd +4 -29
- data/share/schemas/xsd/document.xsd +3 -25
- data/share/schemas/xsd/group.xsd +2 -14
- data/share/schemas/xsd/group_pool.xsd +2 -14
- data/share/schemas/xsd/hook.xsd +2 -0
- data/share/schemas/xsd/host.xsd +5 -7
- data/share/schemas/xsd/image.xsd +2 -25
- data/share/schemas/xsd/marketplace.xsd +3 -22
- data/share/schemas/xsd/marketplaceapp.xsd +3 -25
- data/share/schemas/xsd/opennebula_configuration.xsd +1 -0
- data/share/schemas/xsd/requirements.xsd +3 -21
- data/share/schemas/xsd/security_group.xsd +6 -43
- data/share/schemas/xsd/shared.xsd +3 -3
- data/share/schemas/xsd/vdc.xsd +2 -7
- data/share/schemas/xsd/vm_group.xsd +3 -25
- data/share/schemas/xsd/vm_pool.xsd +2 -0
- data/share/schemas/xsd/vmtemplate.xsd +3 -25
- data/share/schemas/xsd/vnet.xsd +9 -67
- data/share/schemas/xsd/vnet_pool.xsd +8 -57
- data/share/schemas/xsd/vntemplate.xsd +3 -25
- data/share/schemas/xsd/vrouter.xsd +4 -32
- metadata +6 -4
|
@@ -19,242 +19,249 @@ require 'optparse/time'
|
|
|
19
19
|
require 'opennebula/virtual_machine'
|
|
20
20
|
require 'opennebula/virtual_machine_pool'
|
|
21
21
|
|
|
22
|
+
# Helper class for accounting commands
|
|
22
23
|
class AcctHelper < OpenNebulaHelper::OneHelper
|
|
24
|
+
|
|
23
25
|
TIME_ZONE_CUR = {
|
|
24
|
-
:name =>
|
|
25
|
-
:short =>
|
|
26
|
-
:large =>
|
|
27
|
-
:description =>
|
|
26
|
+
:name => 'timezone',
|
|
27
|
+
:short => '-t TZ',
|
|
28
|
+
:large => '--timezone TZ',
|
|
29
|
+
:description => 'User defined Time Zone',
|
|
28
30
|
:format => String
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
START_TIME_ACCT = {
|
|
32
|
-
:name =>
|
|
33
|
-
:short =>
|
|
34
|
-
:large =>
|
|
35
|
-
:description =>
|
|
34
|
+
:name => 'start_time',
|
|
35
|
+
:short => '-s TIME',
|
|
36
|
+
:large => '--start TIME',
|
|
37
|
+
:description => 'First day of the data to retrieve',
|
|
36
38
|
:format => Time
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
END_TIME_ACCT = {
|
|
40
|
-
:name =>
|
|
41
|
-
:short =>
|
|
42
|
-
:large =>
|
|
43
|
-
:description =>
|
|
42
|
+
:name => 'end_time',
|
|
43
|
+
:short => '-e TIME',
|
|
44
|
+
:large => '--end TIME',
|
|
45
|
+
:description => 'Last day of the data to retrieve',
|
|
44
46
|
:format => Time
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
START_TIME_SHOWBACK = {
|
|
48
|
-
:name =>
|
|
49
|
-
:short =>
|
|
50
|
-
:large =>
|
|
51
|
-
:description =>
|
|
50
|
+
:name => 'start_time',
|
|
51
|
+
:short => '-s TIME',
|
|
52
|
+
:large => '--start TIME',
|
|
53
|
+
:description => 'First month of the data',
|
|
52
54
|
:format => Time
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
END_TIME_SHOWBACK = {
|
|
56
|
-
:name =>
|
|
57
|
-
:short =>
|
|
58
|
-
:large =>
|
|
59
|
-
:description =>
|
|
58
|
+
:name => 'end_time',
|
|
59
|
+
:short => '-e TIME',
|
|
60
|
+
:large => '--end TIME',
|
|
61
|
+
:description => 'Last month of the data',
|
|
60
62
|
:format => Time
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
USERFILTER = {
|
|
64
|
-
:name =>
|
|
65
|
-
:short =>
|
|
66
|
-
:large =>
|
|
67
|
-
:description =>
|
|
66
|
+
:name => 'userfilter',
|
|
67
|
+
:short => '-u user',
|
|
68
|
+
:large => '--userfilter user',
|
|
69
|
+
:description => 'User name or id to filter the results',
|
|
68
70
|
:format => String,
|
|
69
|
-
:proc => lambda {
|
|
70
|
-
OpenNebulaHelper.rname_to_id(o,
|
|
71
|
+
:proc => lambda {|o, _options|
|
|
72
|
+
OpenNebulaHelper.rname_to_id(o, 'USER')
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
GROUP = {
|
|
75
|
-
:name =>
|
|
76
|
-
:short =>
|
|
77
|
-
:large =>
|
|
78
|
-
:description =>
|
|
77
|
+
:name => 'group',
|
|
78
|
+
:short => '-g group',
|
|
79
|
+
:large => '--group group',
|
|
80
|
+
:description => 'Group name or id to filter the results',
|
|
79
81
|
:format => String,
|
|
80
|
-
:proc => lambda {
|
|
81
|
-
OpenNebulaHelper.rname_to_id(o,
|
|
82
|
+
:proc => lambda {|o, _options|
|
|
83
|
+
OpenNebulaHelper.rname_to_id(o, 'GROUP')
|
|
82
84
|
}
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
HOST = {
|
|
86
|
-
:name =>
|
|
87
|
-
:short =>
|
|
88
|
-
:large =>
|
|
89
|
-
:description =>
|
|
88
|
+
:name => 'host',
|
|
89
|
+
:short => '-H HOST',
|
|
90
|
+
:large => '--host HOST',
|
|
91
|
+
:description => 'Host name or id to filter the results',
|
|
90
92
|
:format => String,
|
|
91
|
-
:proc => lambda {
|
|
92
|
-
OpenNebulaHelper.rname_to_id(o,
|
|
93
|
+
:proc => lambda {|o, _options|
|
|
94
|
+
OpenNebulaHelper.rname_to_id(o, 'HOST')
|
|
93
95
|
}
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
XPATH = {
|
|
97
|
-
:name =>
|
|
98
|
-
:large =>
|
|
99
|
+
:name => 'xpath',
|
|
100
|
+
:large => '--xpath XPATH_EXPRESSION',
|
|
99
101
|
:description => "Xpath expression to filter the results. \
|
|
100
102
|
For example: oneacct --xpath 'HISTORY[ETIME>0]'",
|
|
101
103
|
:format => String
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
SPLIT={
|
|
105
|
-
:name =>
|
|
106
|
-
:large =>
|
|
107
|
-
:description =>
|
|
107
|
+
:name => 'split',
|
|
108
|
+
:large => '--split',
|
|
109
|
+
:description => 'Split the output in a table for each VM'
|
|
108
110
|
}
|
|
109
111
|
|
|
110
|
-
ACCT_OPTIONS = [TIME_ZONE_CUR, START_TIME_ACCT, END_TIME_ACCT, USERFILTER, GROUP, HOST,
|
|
112
|
+
ACCT_OPTIONS = [TIME_ZONE_CUR, START_TIME_ACCT, END_TIME_ACCT, USERFILTER, GROUP, HOST,
|
|
113
|
+
XPATH, SPLIT]
|
|
111
114
|
SHOWBACK_OPTIONS = [START_TIME_SHOWBACK, END_TIME_SHOWBACK, USERFILTER, GROUP, OpenNebulaHelper::FORMAT]
|
|
112
115
|
|
|
113
116
|
ACCT_OPTIONS << OpenNebulaHelper::XML
|
|
114
117
|
ACCT_OPTIONS << OpenNebulaHelper::JSON
|
|
115
118
|
|
|
116
|
-
ACCT_TABLE = CLIHelper::ShowTable.new(
|
|
117
|
-
column :UID,
|
|
118
|
-
d[
|
|
119
|
+
ACCT_TABLE = CLIHelper::ShowTable.new(table_conf('oneacct.yaml'), nil) do
|
|
120
|
+
column :UID, 'User ID', :size=>4 do |d|
|
|
121
|
+
d['UID']
|
|
119
122
|
end
|
|
120
123
|
|
|
121
|
-
column :VID,
|
|
122
|
-
d[
|
|
124
|
+
column :VID, 'Virtual Machine ID', :size=>4 do |d|
|
|
125
|
+
d['OID']
|
|
123
126
|
end
|
|
124
127
|
|
|
125
|
-
column :SEQ,
|
|
126
|
-
d[
|
|
128
|
+
column :SEQ, 'History record sequence number', :size=>3 do |d|
|
|
129
|
+
d['SEQ']
|
|
127
130
|
end
|
|
128
131
|
|
|
129
|
-
column :HOSTNAME,
|
|
130
|
-
d[
|
|
132
|
+
column :HOSTNAME, 'Host name', :left, :size=>15 do |d|
|
|
133
|
+
d['HOSTNAME']
|
|
131
134
|
end
|
|
132
135
|
|
|
133
|
-
column :
|
|
134
|
-
VirtualMachine.get_history_action d[
|
|
136
|
+
column :ACTION, 'VM state change action', :left, :size=>16 do |d|
|
|
137
|
+
VirtualMachine.get_history_action d['ACTION']
|
|
135
138
|
end
|
|
136
139
|
|
|
137
|
-
column :START_TIME,
|
|
140
|
+
column :START_TIME, 'Start time', :size=>14 do |d|
|
|
138
141
|
OpenNebulaHelper.time_to_str(d['STIME'])
|
|
139
142
|
end
|
|
140
143
|
|
|
141
|
-
column :END_TIME,
|
|
144
|
+
column :END_TIME, 'End time', :size=>14 do |d|
|
|
142
145
|
OpenNebulaHelper.time_to_str(d['ETIME'])
|
|
143
146
|
end
|
|
144
147
|
|
|
145
|
-
column :MEMORY,
|
|
146
|
-
OpenNebulaHelper.unit_to_str(d[
|
|
148
|
+
column :MEMORY, 'Assigned memory', :size=>6 do |d|
|
|
149
|
+
OpenNebulaHelper.unit_to_str(d['VM']['TEMPLATE']['MEMORY'].to_i, {}, 'M') rescue '-'
|
|
147
150
|
end
|
|
148
151
|
|
|
149
|
-
column :CPU,
|
|
150
|
-
d[
|
|
152
|
+
column :CPU, 'Number of CPUs', :size=>3 do |d|
|
|
153
|
+
d['VM']['TEMPLATE']['CPU'] rescue '-'
|
|
151
154
|
end
|
|
152
155
|
|
|
153
|
-
column :NETRX,
|
|
156
|
+
column :NETRX, 'Data received from the network', :size=>6 do |d|
|
|
154
157
|
# NET is measured in bytes, unit_to_str expects KBytes
|
|
155
|
-
OpenNebulaHelper.unit_to_str(d[
|
|
158
|
+
OpenNebulaHelper.unit_to_str(d['VM']['MONITORING']['NETRX'].to_i / 1024.0,
|
|
159
|
+
{}) rescue '-'
|
|
156
160
|
end
|
|
157
161
|
|
|
158
|
-
column :NETTX,
|
|
162
|
+
column :NETTX, 'Data sent to the network', :size=>6 do |d|
|
|
159
163
|
# NET is measured in bytes, unit_to_str expects KBytes
|
|
160
|
-
OpenNebulaHelper.unit_to_str(d[
|
|
164
|
+
OpenNebulaHelper.unit_to_str(d['VM']['MONITORING']['NETTX'].to_i / 1024.0,
|
|
165
|
+
{}) rescue '-'
|
|
161
166
|
end
|
|
162
167
|
|
|
163
|
-
column :DISK,
|
|
168
|
+
column :DISK, 'Total disk size used', :size=>6 do |d|
|
|
164
169
|
# DISK size is measured in mb, unit_to_str expects KBytes
|
|
165
170
|
begin
|
|
166
171
|
total_disk_size = 0
|
|
167
172
|
|
|
168
|
-
|
|
173
|
+
d['VM']['ID'].to_i
|
|
169
174
|
|
|
170
|
-
disks_all = [d[
|
|
175
|
+
disks_all = [d['VM']['TEMPLATE']['DISK']].flatten.compact rescue []
|
|
171
176
|
disks_all.each do |disk|
|
|
172
|
-
total_disk_size += disk[
|
|
177
|
+
total_disk_size += disk['SIZE'].to_i
|
|
173
178
|
end
|
|
174
179
|
|
|
175
|
-
snapshots_all = [d[
|
|
180
|
+
snapshots_all = [d['VM']['SNAPSHOTS']].flatten.compact rescue []
|
|
176
181
|
snapshots_all.each do |snapshot|
|
|
177
|
-
snapshot_disk = [snapshot[
|
|
178
|
-
snapshot_disk.each do |
|
|
179
|
-
total_disk_size +=
|
|
182
|
+
snapshot_disk = [snapshot['SNAPSHOT']].flatten.compact rescue []
|
|
183
|
+
snapshot_disk.each do |s|
|
|
184
|
+
total_disk_size += s['SIZE'].to_i
|
|
180
185
|
end
|
|
181
186
|
end
|
|
182
187
|
|
|
183
188
|
OpenNebulaHelper.unit_to_str(total_disk_size * 1024.0, {})
|
|
184
|
-
rescue
|
|
185
|
-
|
|
189
|
+
rescue StandardError
|
|
190
|
+
'-'
|
|
186
191
|
end
|
|
187
192
|
end
|
|
188
193
|
|
|
189
|
-
default :VID, :HOSTNAME, :ACTION, :START_TIME, :END_TIME, :MEMORY, :CPU, :NETRX, :NETTX,
|
|
194
|
+
default :VID, :HOSTNAME, :ACTION, :START_TIME, :END_TIME, :MEMORY, :CPU, :NETRX, :NETTX,
|
|
195
|
+
:DISK
|
|
190
196
|
end
|
|
191
197
|
|
|
192
|
-
SHOWBACK_TABLE = CLIHelper::ShowTable.new(
|
|
193
|
-
column :UID,
|
|
194
|
-
d[
|
|
198
|
+
SHOWBACK_TABLE = CLIHelper::ShowTable.new(table_conf('oneshowback.yaml'), nil) do
|
|
199
|
+
column :UID, 'User ID', :size=>4 do |d|
|
|
200
|
+
d['UID']
|
|
195
201
|
end
|
|
196
202
|
|
|
197
|
-
column :USER_NAME,
|
|
198
|
-
d[
|
|
203
|
+
column :USER_NAME, 'User name', :left, :size=>12 do |d|
|
|
204
|
+
d['UNAME']
|
|
199
205
|
end
|
|
200
206
|
|
|
201
|
-
column :GID,
|
|
202
|
-
d[
|
|
207
|
+
column :GID, 'Group ID', :size=>4 do |d|
|
|
208
|
+
d['GID']
|
|
203
209
|
end
|
|
204
210
|
|
|
205
|
-
column :GROUP_NAME,
|
|
206
|
-
d[
|
|
211
|
+
column :GROUP_NAME, 'Group name', :left, :size=>12 do |d|
|
|
212
|
+
d['GNAME']
|
|
207
213
|
end
|
|
208
214
|
|
|
209
|
-
column :VM_ID,
|
|
210
|
-
d[
|
|
215
|
+
column :VM_ID, 'Virtual Machine ID', :size=>6 do |d|
|
|
216
|
+
d['VMID']
|
|
211
217
|
end
|
|
212
218
|
|
|
213
|
-
column :VM_NAME,
|
|
214
|
-
d[
|
|
219
|
+
column :VM_NAME, 'Virtual Machine name', :left, :size=>12 do |d|
|
|
220
|
+
d['VMNAME']
|
|
215
221
|
end
|
|
216
222
|
|
|
217
|
-
column :MONTH,
|
|
218
|
-
d[
|
|
223
|
+
column :MONTH, 'Month', :size=>5 do |d|
|
|
224
|
+
d['MONTH']
|
|
219
225
|
end
|
|
220
226
|
|
|
221
|
-
column :YEAR,
|
|
222
|
-
d[
|
|
227
|
+
column :YEAR, 'Year', :size=>5 do |d|
|
|
228
|
+
d['YEAR']
|
|
223
229
|
end
|
|
224
230
|
|
|
225
|
-
column :HOURS,
|
|
226
|
-
d[
|
|
231
|
+
column :HOURS, 'Hours', :size=>6 do |d|
|
|
232
|
+
d['HOURS']
|
|
227
233
|
end
|
|
228
234
|
|
|
229
|
-
column :RUNNING_HOURS,
|
|
230
|
-
d[
|
|
235
|
+
column :RUNNING_HOURS, 'Running hours', :size=>7 do |d|
|
|
236
|
+
d['RHOURS'] || '-'
|
|
231
237
|
end
|
|
232
238
|
|
|
233
|
-
column :COST,
|
|
234
|
-
d[
|
|
239
|
+
column :COST, 'Cost', :size=>15 do |d|
|
|
240
|
+
d['TOTAL_COST']
|
|
235
241
|
end
|
|
236
242
|
|
|
237
|
-
default :USER_NAME, :GROUP_NAME, :VM_ID, :VM_NAME, :MONTH, :YEAR, :HOURS, :RUNNING_HOURS,
|
|
243
|
+
default :USER_NAME, :GROUP_NAME, :VM_ID, :VM_NAME, :MONTH, :YEAR, :HOURS, :RUNNING_HOURS,
|
|
244
|
+
:COST
|
|
238
245
|
end
|
|
239
246
|
|
|
240
247
|
def self.print_start_end_time_header(start_time, end_time)
|
|
241
|
-
print
|
|
248
|
+
print 'Showing active history records from '
|
|
242
249
|
|
|
243
250
|
CLIHelper.scr_bold
|
|
244
|
-
if
|
|
245
|
-
print Time.at(start_time)
|
|
251
|
+
if start_time != -1
|
|
252
|
+
print Time.at(start_time)
|
|
246
253
|
else
|
|
247
|
-
print
|
|
254
|
+
print '-'
|
|
248
255
|
end
|
|
249
256
|
|
|
250
257
|
CLIHelper.scr_restore
|
|
251
|
-
print
|
|
258
|
+
print ' to '
|
|
252
259
|
|
|
253
260
|
CLIHelper.scr_bold
|
|
254
|
-
if
|
|
255
|
-
print Time.at(end_time)
|
|
261
|
+
if end_time != -1
|
|
262
|
+
print Time.at(end_time)
|
|
256
263
|
else
|
|
257
|
-
print
|
|
264
|
+
print '-'
|
|
258
265
|
end
|
|
259
266
|
|
|
260
267
|
CLIHelper.scr_restore
|
|
@@ -277,4 +284,5 @@ class AcctHelper < OpenNebulaHelper::OneHelper
|
|
|
277
284
|
CLIHelper.scr_restore
|
|
278
285
|
puts
|
|
279
286
|
end
|
|
287
|
+
|
|
280
288
|
end
|
|
@@ -19,115 +19,115 @@ require 'opennebula/datastore'
|
|
|
19
19
|
require 'opennebula/datastore_pool'
|
|
20
20
|
require 'opennebula/image'
|
|
21
21
|
|
|
22
|
+
# Helper class for Datastore commands
|
|
22
23
|
class OneDatastoreHelper < OpenNebulaHelper::OneHelper
|
|
24
|
+
|
|
23
25
|
DATASTORE = {
|
|
24
|
-
:name =>
|
|
25
|
-
:short =>
|
|
26
|
-
:large =>
|
|
27
|
-
:description =>
|
|
26
|
+
:name => 'datastore',
|
|
27
|
+
:short => '-d id|name',
|
|
28
|
+
:large => '--datastore id|name',
|
|
29
|
+
:description => 'Selects the datastore',
|
|
28
30
|
:format => String,
|
|
29
|
-
:proc => lambda {
|
|
30
|
-
OpenNebulaHelper.rname_to_id(o,
|
|
31
|
+
:proc => lambda {|o, _options|
|
|
32
|
+
OpenNebulaHelper.rname_to_id(o, 'DATASTORE')
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
|
|
34
36
|
FILE_DATASTORE = {
|
|
35
|
-
:name =>
|
|
36
|
-
:large =>
|
|
37
|
-
:description =>
|
|
37
|
+
:name => 'file_datastore',
|
|
38
|
+
:large => '--file-datastore id|name',
|
|
39
|
+
:description => 'Selects the file datastore',
|
|
38
40
|
:format => String,
|
|
39
|
-
:proc => lambda {
|
|
40
|
-
OpenNebulaHelper.rname_to_id(o,
|
|
41
|
+
:proc => lambda {|o, _options|
|
|
42
|
+
OpenNebulaHelper.rname_to_id(o, 'DATASTORE')
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
def self.rname
|
|
45
|
-
|
|
47
|
+
'DATASTORE'
|
|
46
48
|
end
|
|
47
49
|
|
|
48
50
|
def self.conf_file
|
|
49
|
-
|
|
51
|
+
'onedatastore.yaml'
|
|
50
52
|
end
|
|
51
53
|
|
|
52
54
|
def format_pool(options)
|
|
53
55
|
config_file = self.class.table_conf
|
|
54
56
|
|
|
55
|
-
|
|
56
|
-
column :ID,
|
|
57
|
-
d[
|
|
57
|
+
CLIHelper::ShowTable.new(config_file, self) do
|
|
58
|
+
column :ID, 'ONE identifier for the Datastore', :size=>4 do |d|
|
|
59
|
+
d['ID']
|
|
58
60
|
end
|
|
59
61
|
|
|
60
|
-
column :USER,
|
|
61
|
-
|
|
62
|
+
column :USER, 'Username of the Datastore owner', :left,
|
|
63
|
+
:size=>10 do |d|
|
|
62
64
|
helper.user_name(d, options)
|
|
63
65
|
end
|
|
64
66
|
|
|
65
|
-
column :GROUP,
|
|
66
|
-
|
|
67
|
+
column :GROUP, 'Group of the Datastore', :left,
|
|
68
|
+
:size=>10 do |d|
|
|
67
69
|
helper.group_name(d, options)
|
|
68
70
|
end
|
|
69
71
|
|
|
70
|
-
column :NAME,
|
|
71
|
-
d[
|
|
72
|
+
column :NAME, 'Name of the Datastore', :left, :size=>13 do |d|
|
|
73
|
+
d['NAME']
|
|
72
74
|
end
|
|
73
75
|
|
|
74
|
-
column :SIZE,
|
|
76
|
+
column :SIZE, 'Datastore total size', :size =>10 do |d|
|
|
75
77
|
shared = d['TEMPLATE']['SHARED']
|
|
76
|
-
if shared
|
|
77
|
-
|
|
78
|
+
if !shared.nil? && shared.upcase == 'NO'
|
|
79
|
+
'-'
|
|
78
80
|
else
|
|
79
81
|
OpenNebulaHelper.unit_to_str(d['TOTAL_MB'].to_i, {}, 'M')
|
|
80
82
|
end
|
|
81
83
|
end
|
|
82
84
|
|
|
83
|
-
column :AVAIL,
|
|
85
|
+
column :AVAIL, 'Datastore free size', :left, :size =>5 do |d|
|
|
84
86
|
if d['TOTAL_MB'].to_i == 0
|
|
85
|
-
|
|
87
|
+
'-'
|
|
86
88
|
else
|
|
87
|
-
"#{((d['FREE_MB'].to_f/d['TOTAL_MB'].to_f) * 100).round
|
|
89
|
+
"#{((d['FREE_MB'].to_f/d['TOTAL_MB'].to_f) * 100).round}%"
|
|
88
90
|
end
|
|
89
91
|
end
|
|
90
92
|
|
|
91
|
-
column :CLUSTERS,
|
|
92
|
-
OpenNebulaHelper.clusters_str(d[
|
|
93
|
+
column :CLUSTERS, 'Cluster IDs', :left, :size=>12 do |d|
|
|
94
|
+
OpenNebulaHelper.clusters_str(d['CLUSTERS']['ID'])
|
|
93
95
|
end
|
|
94
96
|
|
|
95
|
-
column :IMAGES,
|
|
96
|
-
if d[
|
|
97
|
-
|
|
97
|
+
column :IMAGES, 'Number of Images', :size=>6 do |d|
|
|
98
|
+
if d['IMAGES']['ID'].nil?
|
|
99
|
+
'0'
|
|
98
100
|
else
|
|
99
|
-
[d[
|
|
101
|
+
[d['IMAGES']['ID']].flatten.size
|
|
100
102
|
end
|
|
101
103
|
end
|
|
102
104
|
|
|
103
|
-
column :TYPE,
|
|
104
|
-
type = OpenNebula::Datastore::DATASTORE_TYPES[d[
|
|
105
|
+
column :TYPE, 'Datastore type', :left, :size=>4 do |d|
|
|
106
|
+
type = OpenNebula::Datastore::DATASTORE_TYPES[d['TYPE'].to_i]
|
|
105
107
|
OpenNebula::Datastore::SHORT_DATASTORE_TYPES[type]
|
|
106
108
|
end
|
|
107
109
|
|
|
108
|
-
column :DS,
|
|
109
|
-
d[
|
|
110
|
+
column :DS, 'Datastore driver', :left, :size=>7 do |d|
|
|
111
|
+
d['DS_MAD']
|
|
110
112
|
end
|
|
111
113
|
|
|
112
|
-
column :TM,
|
|
113
|
-
d[
|
|
114
|
+
column :TM, 'Transfer driver', :left, :size=>7 do |d|
|
|
115
|
+
d['TM_MAD']
|
|
114
116
|
end
|
|
115
117
|
|
|
116
|
-
column :STAT,
|
|
117
|
-
state = OpenNebula::Datastore::DATASTORE_STATES[d[
|
|
118
|
+
column :STAT, 'State of the Datastore', :left, :size=>3 do |d|
|
|
119
|
+
state = OpenNebula::Datastore::DATASTORE_STATES[d['STATE'].to_i]
|
|
118
120
|
OpenNebula::Datastore::SHORT_DATASTORE_STATES[state]
|
|
119
121
|
end
|
|
120
122
|
|
|
121
123
|
default :ID, :USER, :GROUP, :NAME, :SIZE, :AVAIL, :CLUSTERS, :IMAGES,
|
|
122
124
|
:TYPE, :DS, :TM, :STAT
|
|
123
125
|
end
|
|
124
|
-
|
|
125
|
-
table
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
private
|
|
129
129
|
|
|
130
|
-
def factory(id=nil)
|
|
130
|
+
def factory(id = nil)
|
|
131
131
|
if id
|
|
132
132
|
OpenNebula::Datastore.new_with_id(id, @client)
|
|
133
133
|
else
|
|
@@ -136,62 +136,69 @@ class OneDatastoreHelper < OpenNebulaHelper::OneHelper
|
|
|
136
136
|
end
|
|
137
137
|
end
|
|
138
138
|
|
|
139
|
-
def factory_pool(
|
|
139
|
+
def factory_pool(_user_flag = -2)
|
|
140
140
|
OpenNebula::DatastorePool.new(@client)
|
|
141
141
|
end
|
|
142
142
|
|
|
143
|
-
def format_resource(datastore,
|
|
144
|
-
str=
|
|
145
|
-
str_h1=
|
|
143
|
+
def format_resource(datastore, _options = {})
|
|
144
|
+
str='%-15s: %-20s'
|
|
145
|
+
str_h1='%-80s'
|
|
146
146
|
|
|
147
147
|
CLIHelper.print_header(str_h1 % "DATASTORE #{datastore['ID']} INFORMATION")
|
|
148
|
-
puts str
|
|
149
|
-
puts str
|
|
150
|
-
puts str
|
|
151
|
-
puts str
|
|
152
|
-
puts str
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
puts str
|
|
156
|
-
puts str
|
|
157
|
-
puts str
|
|
158
|
-
puts str
|
|
159
|
-
puts str
|
|
160
|
-
puts str
|
|
148
|
+
puts format(str, 'ID', datastore.id.to_s)
|
|
149
|
+
puts format(str, 'NAME', datastore.name)
|
|
150
|
+
puts format(str, 'USER', datastore['UNAME'])
|
|
151
|
+
puts format(str, 'GROUP', datastore['GNAME'])
|
|
152
|
+
puts format(str, 'CLUSTERS',
|
|
153
|
+
OpenNebulaHelper.clusters_str(datastore.retrieve_elements('CLUSTERS/ID')))
|
|
154
|
+
|
|
155
|
+
puts format(str, 'TYPE', datastore.type_str)
|
|
156
|
+
puts format(str, 'DS_MAD', datastore['DS_MAD'])
|
|
157
|
+
puts format(str, 'TM_MAD', datastore['TM_MAD'])
|
|
158
|
+
puts format(str, 'BASE PATH', datastore['BASE_PATH'])
|
|
159
|
+
puts format(str, 'DISK_TYPE', Image::DISK_TYPES[datastore['DISK_TYPE'].to_i])
|
|
160
|
+
puts format(str, 'STATE', datastore.state_str)
|
|
161
161
|
puts
|
|
162
162
|
|
|
163
|
-
CLIHelper.print_header(str_h1 %
|
|
163
|
+
CLIHelper.print_header(str_h1 % 'DATASTORE CAPACITY', false)
|
|
164
164
|
|
|
165
165
|
shared = datastore['TEMPLATE/SHARED']
|
|
166
|
-
local = shared
|
|
166
|
+
local = !shared.nil? && shared.upcase == 'NO'
|
|
167
167
|
limit_mb = datastore['TEMPLATE/LIMIT_MB']
|
|
168
168
|
|
|
169
|
-
puts str
|
|
170
|
-
|
|
171
|
-
puts str
|
|
172
|
-
|
|
169
|
+
puts format(str, 'TOTAL:',
|
|
170
|
+
local ? '-' : OpenNebulaHelper.unit_to_str(datastore['TOTAL_MB'].to_i, {}, 'M'))
|
|
171
|
+
puts format(str, 'FREE:',
|
|
172
|
+
local ? '-' : OpenNebulaHelper.unit_to_str(datastore['FREE_MB'].to_i, {}, 'M'))
|
|
173
|
+
puts format(str, 'USED: ',
|
|
174
|
+
local ? '-' : OpenNebulaHelper.unit_to_str(datastore['USED_MB'].to_i, {}, 'M'))
|
|
175
|
+
puts format(str, 'LIMIT:',
|
|
176
|
+
local || limit_mb.nil? ? '-' : OpenNebulaHelper.unit_to_str(
|
|
177
|
+
limit_mb.to_i, {}, 'M'
|
|
178
|
+
))
|
|
173
179
|
puts
|
|
174
180
|
|
|
175
|
-
CLIHelper.print_header(str_h1 %
|
|
181
|
+
CLIHelper.print_header(str_h1 % 'PERMISSIONS', false)
|
|
176
182
|
|
|
177
|
-
[
|
|
178
|
-
mask =
|
|
179
|
-
mask[0] =
|
|
180
|
-
mask[1] =
|
|
181
|
-
mask[2] =
|
|
183
|
+
['OWNER', 'GROUP', 'OTHER'].each do |e|
|
|
184
|
+
mask = '---'
|
|
185
|
+
mask[0] = 'u' if datastore["PERMISSIONS/#{e}_U"] == '1'
|
|
186
|
+
mask[1] = 'm' if datastore["PERMISSIONS/#{e}_M"] == '1'
|
|
187
|
+
mask[2] = 'a' if datastore["PERMISSIONS/#{e}_A"] == '1'
|
|
182
188
|
|
|
183
|
-
puts str
|
|
184
|
-
|
|
189
|
+
puts format(str, e, mask)
|
|
190
|
+
end
|
|
185
191
|
puts
|
|
186
192
|
|
|
187
|
-
CLIHelper.print_header(str_h1 %
|
|
193
|
+
CLIHelper.print_header(str_h1 % 'DATASTORE TEMPLATE', false)
|
|
188
194
|
puts datastore.template_str
|
|
189
195
|
|
|
190
196
|
puts
|
|
191
197
|
|
|
192
|
-
CLIHelper.print_header(
|
|
198
|
+
CLIHelper.print_header(format('%-15s', 'IMAGES'))
|
|
193
199
|
datastore.img_ids.each do |id|
|
|
194
|
-
puts
|
|
200
|
+
puts format('%-15s', id)
|
|
195
201
|
end
|
|
196
202
|
end
|
|
203
|
+
|
|
197
204
|
end
|