oneacct-export 0.4.3 → 0.4.4
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/one_data_accessor.rb +4 -13
- data/lib/one_worker.rb +1 -21
- data/lib/oneacct_exporter/version.rb +1 -1
- data/lib/oneacct_opts.rb +25 -0
- data/mock/one_data_accessor_cluster_01.xml +1 -1
- data/mock/one_data_accessor_host_01.xml +1 -1
- data/spec/one_data_accessor_spec.rb +7 -15
- data/spec/one_worker_spec.rb +1 -46
- metadata +3 -4
- data/mock/one_data_accessor_host_02.xml +0 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c97727a09636b7edebe37a73fd01907ecf90dba
|
4
|
+
data.tar.gz: 6611ef8ab87262b8fc76117eacf42278bf422aef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2ba6173efd943e3bbd01850a089b5135f7ce94fccbb2f7ecc75b67cfda1b0d76d18a88ad29ab8c361c159943ab4cae9f16acaa064b6a4c881aaa87b3fc81e26
|
7
|
+
data.tar.gz: 3db730a269e531b8a48667275479e26d587cb12f98ae3a1055461304451458f753316dac4b8bd76cf881a4cdd5a3ea6d7d04a7a60c7dd1030fde38c01b18c7ae
|
data/lib/one_data_accessor.rb
CHANGED
@@ -17,7 +17,7 @@ class OneDataAccessor
|
|
17
17
|
|
18
18
|
STATE_DONE = '6'
|
19
19
|
BENCHMARK_TYPE_XPATH = 'TEMPLATE/BENCHMARK_TYPE'
|
20
|
-
|
20
|
+
BENCHMARK_VALUE_XPATH = 'TEMPLATE/BENCHMARK_VALUE'
|
21
21
|
|
22
22
|
attr_reader :log, :batch_size, :client, :compatibility
|
23
23
|
attr_accessor :start_vm_id
|
@@ -199,14 +199,14 @@ class OneDataAccessor
|
|
199
199
|
#
|
200
200
|
# @return [Hash] hosts' IDs and hash with benchmark name and value
|
201
201
|
def benchmark_map
|
202
|
-
map = {}
|
202
|
+
map = Hash.new({})
|
203
203
|
host_pool = OpenNebula::HostPool.new(@client)
|
204
204
|
rc = host_pool.info
|
205
205
|
check_retval(rc, Errors::ResourceRetrievalError)
|
206
206
|
|
207
207
|
host_pool.each do |host|
|
208
208
|
benchmark = benchmark_values(host)
|
209
|
-
|
209
|
+
unless benchmark[:benchmark_type]
|
210
210
|
cluster = cluster_for_host(host)
|
211
211
|
benchmark = benchmark_values(cluster) if cluster
|
212
212
|
end
|
@@ -222,16 +222,7 @@ class OneDataAccessor
|
|
222
222
|
# @param [OpenNebula::PoolElement] entity
|
223
223
|
# @return [Hash] benchmark type and values in form of hash
|
224
224
|
def benchmark_values(entity)
|
225
|
-
benchmark_type
|
226
|
-
return {} unless benchmark_type
|
227
|
-
|
228
|
-
mixins = {}
|
229
|
-
benchmark_values = entity[BENCHMARK_VALUES_XPATH]
|
230
|
-
if benchmark_values
|
231
|
-
mixins = JSON.parse(benchmark_values, :max_nesting => 1)
|
232
|
-
end
|
233
|
-
|
234
|
-
{ :benchmark_type => benchmark_type, :mixins => mixins }
|
225
|
+
{ benchmark_type: entity[BENCHMARK_TYPE_XPATH], benchmark_value: entity[BENCHMARK_VALUE_XPATH] }
|
235
226
|
end
|
236
227
|
|
237
228
|
# Returns object representing a cluster for specified host
|
data/lib/one_worker.rb
CHANGED
@@ -131,7 +131,7 @@ class OneWorker
|
|
131
131
|
data['disks'] = disk_records(vm)
|
132
132
|
data['number_of_public_ips'] = number_of_public_ips(vm)
|
133
133
|
|
134
|
-
benchmark =
|
134
|
+
benchmark = benchmark_map[vm['HISTORY_RECORDS/HISTORY[last()]/HID']]
|
135
135
|
data['benchmark_type'] = benchmark[:benchmark_type]
|
136
136
|
data['benchmark_value'] = benchmark[:benchmark_value]
|
137
137
|
|
@@ -272,26 +272,6 @@ class OneWorker
|
|
272
272
|
raise msg
|
273
273
|
end
|
274
274
|
|
275
|
-
# Search benchmark type and value virtual machine.
|
276
|
-
#
|
277
|
-
# @param [OpenNebula::VirtualMachine] vm virtual machine
|
278
|
-
# @param [Hash] benchmark_map map of all hosts' benchmarks
|
279
|
-
#
|
280
|
-
# @return [Hash] benchmark type and value or both can be nil
|
281
|
-
def search_benchmark(vm, benchmark_map)
|
282
|
-
map = benchmark_map[vm['HISTORY_RECORDS/HISTORY[last()]/HID']]
|
283
|
-
|
284
|
-
return {} unless vm['USER_TEMPLATE/OCCI_COMPUTE_MIXINS']
|
285
|
-
return {} if map.nil? || map.empty?
|
286
|
-
|
287
|
-
occi_compute_mixins = vm['USER_TEMPLATE/OCCI_COMPUTE_MIXINS'].split(/\s+/)
|
288
|
-
occi_compute_mixins.each do |mixin|
|
289
|
-
return { :benchmark_type => map[:benchmark_type], :benchmark_value => map[:mixins][mixin] } if map[:mixins].has_key?(mixin)
|
290
|
-
end
|
291
|
-
|
292
|
-
{}
|
293
|
-
end
|
294
|
-
|
295
275
|
private
|
296
276
|
|
297
277
|
# Check if IP is public
|
data/lib/oneacct_opts.rb
CHANGED
@@ -69,6 +69,24 @@ class OneacctOpts
|
|
69
69
|
options.compatibility = compatibility
|
70
70
|
end
|
71
71
|
|
72
|
+
opts.on('--harden-ssl-security', 'Sets basic SSL options for better security.') do
|
73
|
+
OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_NO_SSLv2
|
74
|
+
OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_NO_SSLv3
|
75
|
+
OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:options] |= OpenSSL::SSL::OP_NO_COMPRESSION
|
76
|
+
end
|
77
|
+
|
78
|
+
opts.on('--ssl-cipher-suite CIPHER_SUITE', 'Sets SSL cipher suite.') do |suite|
|
79
|
+
OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers] = suite
|
80
|
+
end
|
81
|
+
|
82
|
+
opts.on('--ssl-version VERSION', 'Sets SSL version') do |version|
|
83
|
+
OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ssl_version] = version
|
84
|
+
end
|
85
|
+
|
86
|
+
opts.on("--skip-ca-check", "Skip server certificate verification [NOT recommended]") do
|
87
|
+
silence_warnings { OpenSSL::SSL.const_set(:VERIFY_PEER, OpenSSL::SSL::VERIFY_NONE) }
|
88
|
+
end
|
89
|
+
|
72
90
|
opts.on_tail('-h', '--help', 'Shows this message') do
|
73
91
|
puts opts
|
74
92
|
exit
|
@@ -173,4 +191,11 @@ class OneacctOpts
|
|
173
191
|
end
|
174
192
|
end
|
175
193
|
end
|
194
|
+
|
195
|
+
def self.silence_warnings
|
196
|
+
old_verbose, $VERBOSE = $VERBOSE, nil
|
197
|
+
yield
|
198
|
+
ensure
|
199
|
+
$VERBOSE = old_verbose
|
200
|
+
end
|
176
201
|
end
|
@@ -20,7 +20,7 @@
|
|
20
20
|
</VNETS>
|
21
21
|
<TEMPLATE>
|
22
22
|
<BENCHMARK_TYPE>bench_type_cluster_1</BENCHMARK_TYPE>
|
23
|
-
<
|
23
|
+
<BENCHMARK_VALUE>21.7</BENCHMARK_VALUE>
|
24
24
|
<RESERVED_CPU><![CDATA[]]></RESERVED_CPU>
|
25
25
|
<RESERVED_MEM><![CDATA[8388608]]></RESERVED_MEM>
|
26
26
|
</TEMPLATE>
|
@@ -49,7 +49,7 @@
|
|
49
49
|
<TEMPLATE>
|
50
50
|
<ARCH><![CDATA[x86_64]]></ARCH>
|
51
51
|
<BENCHMARK_TYPE>bench_type_1</BENCHMARK_TYPE>
|
52
|
-
<
|
52
|
+
<BENCHMARK_VALUE>36.9</BENCHMARK_VALUE>
|
53
53
|
<CPUSPEED><![CDATA[1200]]></CPUSPEED>
|
54
54
|
<ERROR><![CDATA[Thu Nov 19 11:56:06 2015 : Error monitoring Host whatever.in.czech.republic.cz (21): -]]></ERROR>
|
55
55
|
<HOSTNAME><![CDATA[whatever.in.czech.republic.cz]]></HOSTNAME>
|
@@ -450,20 +450,10 @@ describe OneDataAccessor do
|
|
450
450
|
OpenNebula::XMLElement.new(OpenNebula::XMLElement.build_xml(file, 'CLUSTER'))
|
451
451
|
}
|
452
452
|
|
453
|
-
context 'with correct data on a host
|
453
|
+
context 'with correct data on a host' do
|
454
454
|
let(:host_filename) { 'one_data_accessor_host_01.xml' }
|
455
455
|
let(:expected) { { '1' => { :benchmark_type => 'bench_type_1',
|
456
|
-
:
|
457
|
-
|
458
|
-
it 'creates correct benchmark_map' do
|
459
|
-
expect(subject.benchmark_map).to eq(expected)
|
460
|
-
end
|
461
|
-
end
|
462
|
-
|
463
|
-
context 'with correct data on a host with two benchmark values' do
|
464
|
-
let(:host_filename) { 'one_data_accessor_host_02.xml' }
|
465
|
-
let(:expected) { { '2' => { :benchmark_type => 'bench_type_2',
|
466
|
-
:mixins => { 'mixin1' => 788.6, 'mixin2' => 123.123 } } } }
|
456
|
+
:benchmark_value => '36.9' } } }
|
467
457
|
|
468
458
|
it 'creates correct benchmark_map' do
|
469
459
|
expect(subject.benchmark_map).to eq(expected)
|
@@ -478,7 +468,7 @@ describe OneDataAccessor do
|
|
478
468
|
let(:host_filename) { 'one_data_accessor_host_03.xml' }
|
479
469
|
let(:cluster_filename) { 'one_data_accessor_cluster_01.xml' }
|
480
470
|
let(:expected) { { '3' => { :benchmark_type => 'bench_type_cluster_1',
|
481
|
-
:
|
471
|
+
:benchmark_value => '21.7' } } }
|
482
472
|
|
483
473
|
it 'creates correct benchmark_map' do
|
484
474
|
expect(subject.benchmark_map).to eq(expected)
|
@@ -492,7 +482,8 @@ describe OneDataAccessor do
|
|
492
482
|
|
493
483
|
let(:host_filename) { 'one_data_accessor_host_04.xml' }
|
494
484
|
let(:cluster_filename) { 'one_data_accessor_cluster_02.xml' }
|
495
|
-
let(:expected) { { '4' => {
|
485
|
+
let(:expected) { { '4' => { :benchmark_type => nil,
|
486
|
+
:benchmark_value => nil } } }
|
496
487
|
|
497
488
|
it 'creates correct benchmark_map' do
|
498
489
|
expect(subject.benchmark_map).to eq(expected)
|
@@ -501,7 +492,8 @@ describe OneDataAccessor do
|
|
501
492
|
|
502
493
|
context 'with no data on a host and without host\'s cluster' do
|
503
494
|
let(:host_filename) { 'one_data_accessor_host_05.xml' }
|
504
|
-
let(:expected) { { '5' => {
|
495
|
+
let(:expected) { { '5' => { :benchmark_type => nil,
|
496
|
+
:benchmark_value => nil } } }
|
505
497
|
let(:searched_cluster) { nil }
|
506
498
|
|
507
499
|
it 'creates correct benchmark_map' do
|
data/spec/one_worker_spec.rb
CHANGED
@@ -213,7 +213,7 @@ describe OneWorker do
|
|
213
213
|
let(:user_map) { {'120' => '/Dn=FrOm/CN=DN/CN=MaP'} }
|
214
214
|
let(:image_map) { {'31' => 'image_name_from_map'} }
|
215
215
|
let(:cluster_map) { {'100' => 'site-name-from-cluster'}}
|
216
|
-
let(:benchmark_map) { {'
|
216
|
+
let(:benchmark_map) { {'11' => {}} }
|
217
217
|
|
218
218
|
context 'with apel specific data' do
|
219
219
|
let(:filename) { 'one_worker_vm_dn01.xml' }
|
@@ -583,49 +583,4 @@ describe OneWorker do
|
|
583
583
|
end
|
584
584
|
end
|
585
585
|
end
|
586
|
-
|
587
|
-
describe '.search_benchmark' do
|
588
|
-
let(:vm) do
|
589
|
-
xml = File.read("#{GEM_DIR}/mock/#{filename}")
|
590
|
-
OpenNebula::XMLElement.new(OpenNebula::XMLElement.build_xml(xml, 'VM'))
|
591
|
-
end
|
592
|
-
|
593
|
-
let(:benchmark_map) do
|
594
|
-
values1 = { :benchmark_type => 'bench_type_1', :mixins => { 'mixin1' => '34.12' } }
|
595
|
-
values2 = { :benchmark_type => 'bench_type_2', :mixins => { 'mixin2' => '123.2', 'mixin3' => '129.6' } }
|
596
|
-
values3 = { }
|
597
|
-
|
598
|
-
benchmark_map = { '19' => values1, '11' => values2, '23' => values3 }
|
599
|
-
benchmark_map
|
600
|
-
end
|
601
|
-
|
602
|
-
context 'with empty benchmark_map' do
|
603
|
-
let(:filename) { 'one_worker_vm_search_benchmark_01.xml' }
|
604
|
-
let(:benchmark_map) { {} }
|
605
|
-
let(:expected) { {} }
|
606
|
-
|
607
|
-
it 'returns array with two nil items' do
|
608
|
-
expect(subject.search_benchmark(vm, benchmark_map)).to eq(expected)
|
609
|
-
end
|
610
|
-
end
|
611
|
-
|
612
|
-
context 'with no data for the virtual machine in benchmark_map' do
|
613
|
-
let(:filename) { 'one_worker_vm_search_benchmark_02.xml' }
|
614
|
-
let(:expected) { {} }
|
615
|
-
|
616
|
-
it 'returns array with two nil items' do
|
617
|
-
expect(subject.search_benchmark(vm, benchmark_map)).to eq(expected)
|
618
|
-
end
|
619
|
-
end
|
620
|
-
|
621
|
-
context 'with correct data in vm and benchmark_map' do
|
622
|
-
let(:filename) { 'one_worker_vm_search_benchmark_01.xml' }
|
623
|
-
let(:expected) { { :benchmark_type => 'bench_type_2', :benchmark_value => '129.6' } }
|
624
|
-
|
625
|
-
it 'returns correct benchmark type and value' do
|
626
|
-
expect(subject.search_benchmark(vm, benchmark_map)).to eq(expected)
|
627
|
-
end
|
628
|
-
end
|
629
|
-
end
|
630
|
-
|
631
586
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oneacct-export
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michal Kimle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -220,7 +220,6 @@ files:
|
|
220
220
|
- mock/one_data_accessor_cluster_01.xml
|
221
221
|
- mock/one_data_accessor_cluster_02.xml
|
222
222
|
- mock/one_data_accessor_host_01.xml
|
223
|
-
- mock/one_data_accessor_host_02.xml
|
224
223
|
- mock/one_data_accessor_host_03.xml
|
225
224
|
- mock/one_data_accessor_host_04.xml
|
226
225
|
- mock/one_data_accessor_host_05.xml
|
@@ -274,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
274
273
|
version: '0'
|
275
274
|
requirements: []
|
276
275
|
rubyforge_project:
|
277
|
-
rubygems_version: 2.4.
|
276
|
+
rubygems_version: 2.4.8
|
278
277
|
signing_key:
|
279
278
|
specification_version: 4
|
280
279
|
summary: Exporting OpenNebula accounting data.
|
@@ -1,65 +0,0 @@
|
|
1
|
-
<HOST>
|
2
|
-
<ID>2</ID>
|
3
|
-
<NAME>whatever.in.czech.republic.cz</NAME>
|
4
|
-
<STATE>5</STATE>
|
5
|
-
<IM_MAD><![CDATA[kvm]]></IM_MAD>
|
6
|
-
<VM_MAD><![CDATA[kvm]]></VM_MAD>
|
7
|
-
<VN_MAD><![CDATA[802.1Q]]></VN_MAD>
|
8
|
-
<LAST_MON_TIME>1447930638</LAST_MON_TIME>
|
9
|
-
<CLUSTER_ID>1</CLUSTER_ID>
|
10
|
-
<CLUSTER>fedcloud-warg</CLUSTER>
|
11
|
-
<HOST_SHARE>
|
12
|
-
<DISK_USAGE>0</DISK_USAGE>
|
13
|
-
<MEM_USAGE>50331648</MEM_USAGE>
|
14
|
-
<CPU_USAGE>2000</CPU_USAGE>
|
15
|
-
<MAX_DISK>19686</MAX_DISK>
|
16
|
-
<MAX_MEM>57674040</MAX_MEM>
|
17
|
-
<MAX_CPU>3200</MAX_CPU>
|
18
|
-
<FREE_DISK>13945</FREE_DISK>
|
19
|
-
<FREE_MEM>30670728</FREE_MEM>
|
20
|
-
<FREE_CPU>3196</FREE_CPU>
|
21
|
-
<USED_DISK>4742</USED_DISK>
|
22
|
-
<USED_MEM>35391920</USED_MEM>
|
23
|
-
<USED_CPU>3</USED_CPU>
|
24
|
-
<RUNNING_VMS>11</RUNNING_VMS>
|
25
|
-
<DATASTORES>
|
26
|
-
<DS>
|
27
|
-
<FREE_MB><![CDATA[3037509]]></FREE_MB>
|
28
|
-
<ID><![CDATA[101]]></ID>
|
29
|
-
<TOTAL_MB><![CDATA[3338205]]></TOTAL_MB>
|
30
|
-
<USED_MB><![CDATA[122933]]></USED_MB>
|
31
|
-
<VMS_ALLOCATED_MB><![CDATA[122733]]></VMS_ALLOCATED_MB>
|
32
|
-
<VMS_REQUIRED_MB><![CDATA[130925]]></VMS_REQUIRED_MB>
|
33
|
-
</DS>
|
34
|
-
</DATASTORES>
|
35
|
-
</HOST_SHARE>
|
36
|
-
<VMS>
|
37
|
-
<ID>51575</ID>
|
38
|
-
<ID>53988</ID>
|
39
|
-
<ID>54035</ID>
|
40
|
-
<ID>54553</ID>
|
41
|
-
<ID>55276</ID>
|
42
|
-
<ID>56251</ID>
|
43
|
-
<ID>56288</ID>
|
44
|
-
<ID>56291</ID>
|
45
|
-
<ID>59948</ID>
|
46
|
-
<ID>60163</ID>
|
47
|
-
<ID>60173</ID>
|
48
|
-
</VMS>
|
49
|
-
<TEMPLATE>
|
50
|
-
<ARCH><![CDATA[x86_64]]></ARCH>
|
51
|
-
<BENCHMARK_TYPE>bench_type_2</BENCHMARK_TYPE>
|
52
|
-
<BENCHMARK_VALUES>{"mixin1": 788.6, "mixin2": 123.123}</BENCHMARK_VALUES>
|
53
|
-
<CPUSPEED><![CDATA[1200]]></CPUSPEED>
|
54
|
-
<ERROR><![CDATA[Thu Nov 19 11:56:06 2015 : Error monitoring Host whatever.in.czech.republic.cz (21): -]]></ERROR>
|
55
|
-
<HOSTNAME><![CDATA[whatever.in.czech.republic.cz]]></HOSTNAME>
|
56
|
-
<HYPERVISOR><![CDATA[kvm]]></HYPERVISOR>
|
57
|
-
<MODELNAME><![CDATA[Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz]]></MODELNAME>
|
58
|
-
<NETRX><![CDATA[518778988428]]></NETRX>
|
59
|
-
<NETTX><![CDATA[761175714938]]></NETTX>
|
60
|
-
<PRIORITY><![CDATA[990]]></PRIORITY>
|
61
|
-
<RESERVED_CPU><![CDATA[]]></RESERVED_CPU>
|
62
|
-
<RESERVED_MEM><![CDATA[]]></RESERVED_MEM>
|
63
|
-
<VERSION><![CDATA[4.10.1]]></VERSION>
|
64
|
-
</TEMPLATE>
|
65
|
-
</HOST>
|