oneacct-export 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +11 -0
  6. data/Rakefile +18 -0
  7. data/bin/oneacct-export +72 -0
  8. data/config/conf.yml +53 -0
  9. data/config/sidekiq.yml +6 -0
  10. data/lib/errors.rb +7 -0
  11. data/lib/errors/authentication_error.rb +3 -0
  12. data/lib/errors/resource_not_found_error.rb +3 -0
  13. data/lib/errors/resource_retrieval_error.rb +3 -0
  14. data/lib/errors/resource_state_error.rb +3 -0
  15. data/lib/errors/user_not_authorized_error.rb +3 -0
  16. data/lib/input_validator.rb +18 -0
  17. data/lib/one_data_accessor.rb +147 -0
  18. data/lib/one_worker.rb +181 -0
  19. data/lib/one_writer.rb +51 -0
  20. data/lib/oneacct_exporter.rb +88 -0
  21. data/lib/oneacct_exporter/log.rb +15 -0
  22. data/lib/oneacct_exporter/version.rb +3 -0
  23. data/lib/oneacct_opts.rb +131 -0
  24. data/lib/redis_conf.rb +29 -0
  25. data/lib/settings.rb +13 -0
  26. data/lib/sidekiq_conf.rb +11 -0
  27. data/lib/templates/apel-0.2.erb +30 -0
  28. data/mock/one_worker_DEPLOY_ID_missing.xml +136 -0
  29. data/mock/one_worker_DISK_missing.xml +119 -0
  30. data/mock/one_worker_ETIME_0.xml +137 -0
  31. data/mock/one_worker_ETIME_missing.xml +136 -0
  32. data/mock/one_worker_ETIME_nan.xml +137 -0
  33. data/mock/one_worker_GID_missing.xml +136 -0
  34. data/mock/one_worker_GNAME_missing.xml +136 -0
  35. data/mock/one_worker_HISTORY_RECORDS_missing.xml +91 -0
  36. data/mock/one_worker_HISTORY_many.xml +137 -0
  37. data/mock/one_worker_HISTORY_missing.xml +93 -0
  38. data/mock/one_worker_HISTORY_one.xml +115 -0
  39. data/mock/one_worker_IMAGE_ID_missing.xml +136 -0
  40. data/mock/one_worker_MEMORY_0.xml +137 -0
  41. data/mock/one_worker_MEMORY_missing.xml +136 -0
  42. data/mock/one_worker_MEMORY_nan.xml +137 -0
  43. data/mock/one_worker_NET_RX_0.xml +137 -0
  44. data/mock/one_worker_NET_RX_missing.xml +136 -0
  45. data/mock/one_worker_NET_RX_nan.xml +137 -0
  46. data/mock/one_worker_NET_TX_0.xml +137 -0
  47. data/mock/one_worker_NET_TX_missing.xml +136 -0
  48. data/mock/one_worker_NET_TX_nan.xml +137 -0
  49. data/mock/one_worker_RETIME_0.xml +115 -0
  50. data/mock/one_worker_RETIME_missing.xml +114 -0
  51. data/mock/one_worker_RSTIME_0.xml +115 -0
  52. data/mock/one_worker_RSTIME_>_RETIME.xml +115 -0
  53. data/mock/one_worker_RSTIME_missing.xml +114 -0
  54. data/mock/one_worker_STATE_missing.xml +136 -0
  55. data/mock/one_worker_STATE_out_of_range.xml +137 -0
  56. data/mock/one_worker_STIME_>_ETIME.xml +137 -0
  57. data/mock/one_worker_STIME_missing.xml +136 -0
  58. data/mock/one_worker_STIME_nan.xml +137 -0
  59. data/mock/one_worker_TEMPLATE_missing.xml +79 -0
  60. data/mock/one_worker_UID_missing.xml +136 -0
  61. data/mock/one_worker_VCPU_0.xml +137 -0
  62. data/mock/one_worker_VCPU_missing.xml +136 -0
  63. data/mock/one_worker_VCPU_nan.xml +137 -0
  64. data/mock/one_worker_malformed_vm.xml +136 -0
  65. data/mock/one_worker_valid_machine.xml +137 -0
  66. data/mock/one_worker_vm1.xml +137 -0
  67. data/mock/one_worker_vm2.xml +137 -0
  68. data/mock/one_worker_vm3.xml +137 -0
  69. data/mock/one_writer_testfile +2 -0
  70. data/oneacct-export.gemspec +31 -0
  71. data/spec/one_data_accessor_spec.rb +441 -0
  72. data/spec/one_worker_spec.rb +684 -0
  73. data/spec/one_writer_spec.rb +146 -0
  74. data/spec/oneacct_exporter_spec.rb +262 -0
  75. data/spec/oneacct_opts_spec.rb +229 -0
  76. data/spec/redis_conf_spec.rb +94 -0
  77. data/spec/spec_helper.rb +11 -0
  78. metadata +254 -0
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+
3
+ describe RedisConf do
4
+ subject { redisconf }
5
+
6
+ let(:redisconf) { RedisConf }
7
+ let(:default_options) { { namespace: 'oneacct_export', url: 'redis://localhost:6379' } }
8
+
9
+ describe '#options' do
10
+ context 'without redis options set' do
11
+ before :example do
12
+ Settings.redis['namespace'] = nil
13
+ Settings.redis['url'] = nil
14
+ Settings.redis['password'] = nil
15
+ end
16
+
17
+ it 'will use default values' do
18
+ expect(subject.options).to eq(default_options)
19
+ end
20
+ end
21
+
22
+ context 'with different namespace' do
23
+ before :example do
24
+ Settings.redis['namespace'] = 'custom_namespace'
25
+ Settings.redis['url'] = nil
26
+ Settings.redis['password'] = nil
27
+ end
28
+
29
+ it 'will correctly assign custom namespace' do
30
+ options = default_options.clone
31
+ options[:namespace] = 'custom_namespace'
32
+ expect(subject.options).to eq(options)
33
+ end
34
+ end
35
+
36
+ context 'with different url' do
37
+ before :example do
38
+ Settings.redis['namespace'] = nil
39
+ Settings.redis['password'] = nil
40
+ end
41
+
42
+ context 'that is a valid url' do
43
+ before :example do
44
+ Settings.redis['url'] = 'redis://machine.hogworts:1234'
45
+ end
46
+
47
+ it 'will correctly assign custom url' do
48
+ options = default_options.clone
49
+ options[:url] = 'redis://machine.hogworts:1234'
50
+ expect(subject.options).to eq(options)
51
+ end
52
+ end
53
+
54
+ context 'that is not a valid url' do
55
+ before :example do
56
+ Settings.redis['url'] = 'qwerty_)(*@%?>'
57
+ end
58
+
59
+ it 'will raise an ArgumentError' do
60
+ expect { subject.options }.to raise_error(ArgumentError)
61
+ end
62
+ end
63
+ end
64
+
65
+ context 'with different password' do
66
+ before :example do
67
+ Settings.redis['namespace'] = nil
68
+ Settings.redis['url'] = nil
69
+ end
70
+
71
+ context 'that is a valid password' do
72
+ before :example do
73
+ Settings.redis['password'] = 'secret_password'
74
+ end
75
+
76
+ it 'will correctly insert password into url' do
77
+ options = default_options.clone
78
+ options[:url] = 'redis://:secret_password@localhost:6379'
79
+ expect(subject.options).to eq(options)
80
+ end
81
+ end
82
+
83
+ context 'that is not a valid password' do
84
+ before :example do
85
+ Settings.redis['password'] = ''
86
+ end
87
+
88
+ it 'will raise an ArgumentError' do
89
+ expect { subject.options }.to raise_error(ArgumentError)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,11 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ ENV['RAILS_ENV'] = 'test'
5
+ require 'one_writer'
6
+ require 'redis_conf'
7
+ require 'one_data_accessor'
8
+ require 'oneacct_exporter'
9
+ require 'sidekiq/testing'
10
+ require 'oneacct_opts'
11
+ GEM_DIR = File.realdirpath("#{File.dirname(__FILE__)}/..")
metadata ADDED
@@ -0,0 +1,254 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oneacct-export
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Michal Kimle
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 3.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 3.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubygems-tasks
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.2.4
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.2.4
83
+ - !ruby/object:Gem::Dependency
84
+ name: opennebula
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 4.6.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 4.6.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: syslogger
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.6.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.6.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: sidekiq
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '='
116
+ - !ruby/object:Gem::Version
117
+ version: 3.2.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '='
123
+ - !ruby/object:Gem::Version
124
+ version: 3.2.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: settingslogic
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 2.0.9
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 2.0.9
139
+ description: 'Exporting OpenNebula accounting data. '
140
+ email:
141
+ - kimle.michal@gmail.com
142
+ executables:
143
+ - oneacct-export
144
+ extensions: []
145
+ extra_rdoc_files: []
146
+ files:
147
+ - ".gitignore"
148
+ - Gemfile
149
+ - LICENSE.txt
150
+ - README.md
151
+ - Rakefile
152
+ - bin/oneacct-export
153
+ - config/conf.yml
154
+ - config/sidekiq.yml
155
+ - lib/errors.rb
156
+ - lib/errors/authentication_error.rb
157
+ - lib/errors/resource_not_found_error.rb
158
+ - lib/errors/resource_retrieval_error.rb
159
+ - lib/errors/resource_state_error.rb
160
+ - lib/errors/user_not_authorized_error.rb
161
+ - lib/input_validator.rb
162
+ - lib/one_data_accessor.rb
163
+ - lib/one_worker.rb
164
+ - lib/one_writer.rb
165
+ - lib/oneacct_exporter.rb
166
+ - lib/oneacct_exporter/log.rb
167
+ - lib/oneacct_exporter/version.rb
168
+ - lib/oneacct_opts.rb
169
+ - lib/redis_conf.rb
170
+ - lib/settings.rb
171
+ - lib/sidekiq_conf.rb
172
+ - lib/templates/apel-0.2.erb
173
+ - mock/one_worker_DEPLOY_ID_missing.xml
174
+ - mock/one_worker_DISK_missing.xml
175
+ - mock/one_worker_ETIME_0.xml
176
+ - mock/one_worker_ETIME_missing.xml
177
+ - mock/one_worker_ETIME_nan.xml
178
+ - mock/one_worker_GID_missing.xml
179
+ - mock/one_worker_GNAME_missing.xml
180
+ - mock/one_worker_HISTORY_RECORDS_missing.xml
181
+ - mock/one_worker_HISTORY_many.xml
182
+ - mock/one_worker_HISTORY_missing.xml
183
+ - mock/one_worker_HISTORY_one.xml
184
+ - mock/one_worker_IMAGE_ID_missing.xml
185
+ - mock/one_worker_MEMORY_0.xml
186
+ - mock/one_worker_MEMORY_missing.xml
187
+ - mock/one_worker_MEMORY_nan.xml
188
+ - mock/one_worker_NET_RX_0.xml
189
+ - mock/one_worker_NET_RX_missing.xml
190
+ - mock/one_worker_NET_RX_nan.xml
191
+ - mock/one_worker_NET_TX_0.xml
192
+ - mock/one_worker_NET_TX_missing.xml
193
+ - mock/one_worker_NET_TX_nan.xml
194
+ - mock/one_worker_RETIME_0.xml
195
+ - mock/one_worker_RETIME_missing.xml
196
+ - mock/one_worker_RSTIME_0.xml
197
+ - mock/one_worker_RSTIME_>_RETIME.xml
198
+ - mock/one_worker_RSTIME_missing.xml
199
+ - mock/one_worker_STATE_missing.xml
200
+ - mock/one_worker_STATE_out_of_range.xml
201
+ - mock/one_worker_STIME_>_ETIME.xml
202
+ - mock/one_worker_STIME_missing.xml
203
+ - mock/one_worker_STIME_nan.xml
204
+ - mock/one_worker_TEMPLATE_missing.xml
205
+ - mock/one_worker_UID_missing.xml
206
+ - mock/one_worker_VCPU_0.xml
207
+ - mock/one_worker_VCPU_missing.xml
208
+ - mock/one_worker_VCPU_nan.xml
209
+ - mock/one_worker_malformed_vm.xml
210
+ - mock/one_worker_valid_machine.xml
211
+ - mock/one_worker_vm1.xml
212
+ - mock/one_worker_vm2.xml
213
+ - mock/one_worker_vm3.xml
214
+ - mock/one_writer_testfile
215
+ - oneacct-export.gemspec
216
+ - spec/one_data_accessor_spec.rb
217
+ - spec/one_worker_spec.rb
218
+ - spec/one_writer_spec.rb
219
+ - spec/oneacct_exporter_spec.rb
220
+ - spec/oneacct_opts_spec.rb
221
+ - spec/redis_conf_spec.rb
222
+ - spec/spec_helper.rb
223
+ homepage: ''
224
+ licenses:
225
+ - MIT
226
+ metadata: {}
227
+ post_install_message:
228
+ rdoc_options: []
229
+ require_paths:
230
+ - lib
231
+ required_ruby_version: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: '0'
236
+ required_rubygems_version: !ruby/object:Gem::Requirement
237
+ requirements:
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: '0'
241
+ requirements: []
242
+ rubyforge_project:
243
+ rubygems_version: 2.2.2
244
+ signing_key:
245
+ specification_version: 4
246
+ summary: Exporting OpenNebula accounting data.
247
+ test_files:
248
+ - spec/one_data_accessor_spec.rb
249
+ - spec/one_worker_spec.rb
250
+ - spec/one_writer_spec.rb
251
+ - spec/oneacct_exporter_spec.rb
252
+ - spec/oneacct_opts_spec.rb
253
+ - spec/redis_conf_spec.rb
254
+ - spec/spec_helper.rb