lorj 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +2 -0
  3. data/example/students_1/process/students.rb +1 -1
  4. data/example/students_1/student_v1.md +2 -0
  5. data/example/students_1/students.rb +2 -1
  6. data/example/students_2/process/students.rb +1 -1
  7. data/example/students_2/students.rb +4 -2
  8. data/example/students_3/controller/yaml_students_def.rb +1 -1
  9. data/example/students_3/process/students.rb +1 -1
  10. data/example/students_3/student_v3.md +5 -3
  11. data/example/students_3/students.rb +5 -3
  12. data/example/students_4/controller/yaml_students_def.rb +1 -1
  13. data/example/students_4/process/students/definition/students.rb +1 -1
  14. data/example/students_4/students.rb +5 -3
  15. data/example/students_5/controller/yaml_students.rb +1 -1
  16. data/example/students_5/process/students.rb +1 -1
  17. data/example/students_5/student_v5.md +4 -4
  18. data/example/students_5/students.rb +8 -7
  19. data/example/yaml_students/students.rb +4 -4
  20. data/lib/core/core.rb +110 -64
  21. data/lib/core/core_internal.rb +110 -15
  22. data/lib/core/core_object_data.rb +4 -4
  23. data/lib/core/core_process_setup.rb +3 -30
  24. data/lib/core/lorj_data.rb +1 -1
  25. data/lib/core/lorj_keypath.rb +3 -1
  26. data/lib/core/process.rb +67 -0
  27. data/lib/lorj/version.rb +2 -1
  28. data/lib/lorj.rb +3 -4
  29. data/lib/lorj_account.rb +6 -5
  30. data/lib/lorj_config.rb +3 -2
  31. data/lib/providers/templates/compute.rb +1 -1
  32. data/lorj-spec/controllers/mock/mock.rb +144 -0
  33. data/lorj-spec/data.yaml +0 -0
  34. data/lorj-spec/process/mock2_process.rb +48 -0
  35. data/lorj-spec/process/mock_process.rb +48 -0
  36. data/lorj-spec/providers/mock2/mock2.rb +0 -0
  37. data/lorj.gemspec +2 -4
  38. data/spec/05_lorj_keypath_spec.rb +78 -0
  39. data/spec/20_lorj_meta_spec.rb +1 -1
  40. data/spec/21_lorj_processes_spec.rb +115 -0
  41. metadata +27 -42
  42. data/lib/core_process/cloud/process/common.rb +0 -60
  43. data/lib/core_process/cloud/process/connection.rb +0 -92
  44. data/lib/core_process/cloud/process/external_network.rb +0 -90
  45. data/lib/core_process/cloud/process/flavor.rb +0 -97
  46. data/lib/core_process/cloud/process/images.rb +0 -99
  47. data/lib/core_process/cloud/process/internet_network.rb +0 -33
  48. data/lib/core_process/cloud/process/internet_server.rb +0 -29
  49. data/lib/core_process/cloud/process/keypairs.rb +0 -332
  50. data/lib/core_process/cloud/process/network.rb +0 -107
  51. data/lib/core_process/cloud/process/public_ip.rb +0 -102
  52. data/lib/core_process/cloud/process/router.rb +0 -267
  53. data/lib/core_process/cloud/process/rules.rb +0 -120
  54. data/lib/core_process/cloud/process/security_groups.rb +0 -120
  55. data/lib/core_process/cloud/process/server.rb +0 -126
  56. data/lib/core_process/cloud/process/server_log.rb +0 -34
  57. data/lib/core_process/cloud/process/subnetwork.rb +0 -96
  58. data/lib/core_process/cloud_process.rb +0 -30
  59. data/lib/prc_base_config.rb +0 -300
  60. data/lib/prc_core_config.rb +0 -1258
  61. data/lib/prc_section_config.rb +0 -90
  62. data/lib/providers/hpcloud/compute.rb +0 -105
  63. data/lib/providers/hpcloud/hpcloud.rb +0 -462
  64. data/lib/providers/hpcloud/network.rb +0 -115
  65. data/lib/providers/hpcloud/security_groups.rb +0 -68
  66. data/lib/providers/openstack/openstack.rb +0 -410
  67. data/lib/providers/openstack/openstack_create.rb +0 -205
  68. data/lib/providers/openstack/openstack_delete.rb +0 -28
  69. data/lib/providers/openstack/openstack_get.rb +0 -39
  70. data/lib/providers/openstack/openstack_process.rb +0 -26
  71. data/lib/providers/openstack/openstack_query.rb +0 -96
  72. data/lib/providers/openstack/openstack_update.rb +0 -35
  73. data/lib/rh.rb +0 -426
  74. data/spec/01_hash_rh_spec.rb +0 -282
  75. data/spec/02_prc_base_config_spec.rb +0 -227
  76. data/spec/03_prc_section_config_spec.rb +0 -196
  77. data/spec/04_prc_core_config_spec.rb +0 -325
@@ -0,0 +1,48 @@
1
+ # encoding: UTF-8
2
+
3
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Students process
18
+ class StudentsProcess
19
+ def create_student(sObjectType, hParams)
20
+ PrcLib.state(format("Running creation process for object '%s' = '%s'",
21
+ sObjectType, hParams[:student_name]))
22
+ # byebug if ENV['BYEBUG'] # rubocop: disable Debugger
23
+ object = controller_create(sObjectType)
24
+ PrcLib.runtime_fail "Student '%s' not created.",
25
+ hParams[:student_name] if object.nil?
26
+ PrcLib.info("'%s': '%s' created with id %s",
27
+ sObjectType, hParams[:student_name], object[:id])
28
+ object
29
+ end
30
+ end
31
+
32
+ # Declaring your data model and handlers.
33
+ class Lorj::BaseDefinition # rubocop: disable Style/ClassAndModuleChildren
34
+ # We need to define the student object and the handler to use while we need to
35
+ # create it.
36
+ define_obj(:student,
37
+ # The function to call in the class Students
38
+ :create_e => :create_student,
39
+ # We use predefined call to the controller query
40
+ :query_e => :controller_query,
41
+ # We use predefined call to the controller get
42
+ :get_e => :controller_get,
43
+ # We use predefined call to the controller delete
44
+ :delete_e => :controller_delete
45
+ )
46
+
47
+ obj_needs :data, :student_name, :for => [:create_e], :mapping => :name
48
+ end
File without changes
data/lorj.gemspec CHANGED
@@ -11,6 +11,7 @@ less_than_two = ruby_conf['MAJOR'].to_i < 2
11
11
  Gem::Specification.new do |spec|
12
12
  spec.name = 'lorj'
13
13
  spec.version = Lorj::VERSION
14
+ spec.date = Lorj::DATE
14
15
  spec.authors = ['forj team']
15
16
  spec.email = ['forj@forj.io']
16
17
  spec.summary = 'Process Controllers framework system'
@@ -35,10 +36,7 @@ Gem::Specification.new do |spec|
35
36
  '--title Lorj - The Process Controllers framework system' << \
36
37
  '--main README.md'
37
38
 
38
- # spec.add_runtime_dependency 'thor', '~>0.16.0'
39
- # spec.add_runtime_dependency 'nokogiri', '~>1.5.11'
40
- # spec.add_runtime_dependency 'fog', '~>1.19.0'
41
- # spec.add_runtime_dependency 'hpcloud', '~>2.0.9'
39
+ spec.add_runtime_dependency 'config_layers', '~>0.1.0'
42
40
  # spec.add_runtime_dependency 'git', '>=1.2.7'
43
41
  # spec.add_runtime_dependency 'rbx-require-relative', '~>0.0.7'
44
42
  spec.add_runtime_dependency 'highline', '~> 1.6.21'
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ # require 'byebug'
19
+
20
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib/core')
21
+
22
+ require 'lorj_keypath'
23
+
24
+ describe 'Lorj::KeyPath,' do
25
+ context 'initialize with :test' do
26
+ before(:all) do
27
+ @o_key = Lorj::KeyPath.new(:test)
28
+ end
29
+ it 'Test method #to_s' do
30
+ expect(@o_key.to_s).to eq('test')
31
+ end
32
+ it 'Test method #key' do
33
+ expect(@o_key.key).to eq(:test)
34
+ end
35
+ it 'Test method #key(0)' do
36
+ expect(@o_key.key(0)).to eq(:test)
37
+ end
38
+ it 'Test method #key(1)' do
39
+ expect(@o_key.key(1)).to eq(nil)
40
+ end
41
+ it 'Test method #fpath' do
42
+ expect(@o_key.fpath).to eq(':test')
43
+ end
44
+ it 'Test method #tree' do
45
+ expect(@o_key.key).to eq(:test)
46
+ end
47
+ it 'Test method #key_tree' do
48
+ expect(@o_key.key).to eq(:test)
49
+ end
50
+ end
51
+
52
+ context 'initialize with [:test,:test2,:test3]' do
53
+ before(:all) do
54
+ @o_key = Lorj::KeyPath.new([:test, :test2, :test3])
55
+ end
56
+ it 'Test method #to_s' do
57
+ expect(@o_key.to_s).to eq('test/test2/test3')
58
+ end
59
+ it 'Test method #key' do
60
+ expect(@o_key.key).to eq(:test3)
61
+ end
62
+ it 'Test method #key(0)' do
63
+ expect(@o_key.key(0)).to eq(:test)
64
+ end
65
+ it 'Test method #key(1)' do
66
+ expect(@o_key.key(1)).to eq(:test2)
67
+ end
68
+ it 'Test method #fpath' do
69
+ expect(@o_key.fpath).to eq(':test/:test2/:test3')
70
+ end
71
+ it 'Test method #tree' do
72
+ expect(@o_key.tree).to eq([:test, :test2, :test3])
73
+ end
74
+ it 'Test method #key_tree' do
75
+ expect(@o_key.key_tree).to eq(':test/:test2/:test3')
76
+ end
77
+ end
78
+ end
@@ -237,7 +237,7 @@ YAMLDOC
237
237
  'returns :option1 => :value1' do
238
238
  expect(@metadata.where?(:any, :kind_of, :data1, :option1)).to equal(false)
239
239
  expect(@metadata.set(:any, :kind_of, :data1, :option1 => :value1
240
- )).to eq(:option1 => :value1)
240
+ )).to eq(:option1 => :value1)
241
241
  expect(@metadata.where?(:any, :kind_of, :data1,
242
242
  :option1)).to eq(['controller'])
243
243
  end
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ # require 'rubygems'
19
+ # require 'byebug'
20
+ # require 'debugger'
21
+ # require 'bundler/setup'
22
+
23
+ app_path = File.dirname(__FILE__)
24
+
25
+ $LOAD_PATH << File.join(app_path, '..', 'lib')
26
+
27
+ require 'lorj' # Load lorj framework
28
+
29
+ describe 'Lorj::Process,' do
30
+ context 'with mock initialized,' do
31
+ before(:all) do
32
+ @lorj_spec = 'lorj-spec'
33
+ @process_path = File.expand_path(File.join(app_path, '..', @lorj_spec))
34
+ end
35
+
36
+ it 'default initialization is ok' do
37
+ process_file = File.join(@process_path, 'process', 'mock_process.rb')
38
+ controllers = { 'mock' => File.join(@process_path, 'controllers',
39
+ 'mock', 'mock.rb') }
40
+ default = File.join(@process_path, 'defaults.yaml')
41
+ data = File.join(@process_path, 'data.yaml')
42
+ process_data = Lorj::ProcessResource.new('mock', File.join(app_path,
43
+ '..',
44
+ @lorj_spec))
45
+ expect(process_data).to be
46
+ expect(process_data.name).to eq('mock')
47
+ expect(process_data.process).to eq(process_file)
48
+ expect(process_data.controllers).to eq(controllers)
49
+ expect(process_data.defaults_file).to eq(default)
50
+ expect(process_data.data_file).to eq(data)
51
+ end
52
+
53
+ it 'reports missing elements not set' do
54
+ process_data = Lorj::ProcessResource.new('mock', app_path)
55
+ expect(process_data).to be
56
+ expect(process_data.name).to equal(nil)
57
+ expect(process_data.process).to equal(nil)
58
+ expect(process_data.controllers).to equal(nil)
59
+ expect(process_data.defaults_file).to equal(nil)
60
+ expect(process_data.data_file).to equal(nil)
61
+ end
62
+
63
+ it 'accepts symbol as name, but converted.' do
64
+ process_file = File.join(@process_path, 'process', 'mock_process.rb')
65
+ controllers = { 'mock' => File.join(@process_path, 'controllers',
66
+ 'mock', 'mock.rb') }
67
+ default = File.join(@process_path, 'defaults.yaml')
68
+ data = File.join(@process_path, 'data.yaml')
69
+ process_data = Lorj::ProcessResource.new(:mock, File.join(app_path, '..',
70
+ @lorj_spec))
71
+ expect(process_data).to be
72
+ expect(process_data.name).to eq('mock')
73
+ expect(process_data.process).to eq(process_file)
74
+ expect(process_data.controllers).to eq(controllers)
75
+ expect(process_data.defaults_file).to eq(default)
76
+ expect(process_data.data_file).to eq(data)
77
+ end
78
+
79
+ it 'initialization with :controllers_dir is ok' do
80
+ process_file = File.join(@process_path, 'process', 'mock_process.rb')
81
+ controllers = { 'mock2' => File.join(@process_path, 'providers',
82
+ 'mock2', 'mock2.rb') }
83
+ default = File.join(@process_path, 'defaults.yaml')
84
+ data = File.join(@process_path, 'data.yaml')
85
+ process_data = Lorj::ProcessResource.new('mock', @process_path,
86
+ :controllers_dir => 'providers')
87
+ expect(process_data).to be
88
+ expect(process_data.name).to eq('mock')
89
+ expect(process_data.process).to eq(process_file)
90
+ expect(process_data.controllers).to eq(controllers)
91
+ expect(process_data.defaults_file).to eq(default)
92
+ expect(process_data.data_file).to eq(data)
93
+ end
94
+
95
+ it 'can declare a module process' do
96
+ expect(Lorj.declare_process('mock', @process_path)).to be
97
+ end
98
+
99
+ it 'kept module in Lorj.processes' do
100
+ expect(Lorj.processes.key?('mock')).to equal(true)
101
+ expect(Lorj.processes['mock'].class).to equal(Lorj::ProcessResource)
102
+ end
103
+
104
+ it 'can declare several module processes' do
105
+ expect(Lorj.declare_process('mock', @process_path)).to be
106
+ expect(Lorj.declare_process(:mock2, @process_path)).to be
107
+ expect(Lorj.declare_process('mock3', @process_path)).to equal(nil)
108
+ end
109
+
110
+ it 'all kept module processes in Lorj.processes not duplicated.' do
111
+ expect(Lorj.processes.length).to eq(2)
112
+ expect(Lorj.processes.keys).to eq(%w(mock mock2))
113
+ end
114
+ end
115
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lorj
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.9
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - forj team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-02 00:00:00.000000000 Z
11
+ date: 2015-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: config_layers
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 0.1.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.1.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: highline
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -134,6 +148,7 @@ extra_rdoc_files: []
134
148
  files:
135
149
  - .gitignore
136
150
  - .gitreview
151
+ - .rspec
137
152
  - .rubocop.yml
138
153
  - Gemfile
139
154
  - LICENSE.txt
@@ -187,23 +202,7 @@ files:
187
202
  - lib/core/lorj_baseprocess.rb
188
203
  - lib/core/lorj_data.rb
189
204
  - lib/core/lorj_keypath.rb
190
- - lib/core_process/cloud/process/common.rb
191
- - lib/core_process/cloud/process/connection.rb
192
- - lib/core_process/cloud/process/external_network.rb
193
- - lib/core_process/cloud/process/flavor.rb
194
- - lib/core_process/cloud/process/images.rb
195
- - lib/core_process/cloud/process/internet_network.rb
196
- - lib/core_process/cloud/process/internet_server.rb
197
- - lib/core_process/cloud/process/keypairs.rb
198
- - lib/core_process/cloud/process/network.rb
199
- - lib/core_process/cloud/process/public_ip.rb
200
- - lib/core_process/cloud/process/router.rb
201
- - lib/core_process/cloud/process/rules.rb
202
- - lib/core_process/cloud/process/security_groups.rb
203
- - lib/core_process/cloud/process/server.rb
204
- - lib/core_process/cloud/process/server_log.rb
205
- - lib/core_process/cloud/process/subnetwork.rb
206
- - lib/core_process/cloud_process.rb
205
+ - lib/core/process.rb
207
206
  - lib/img/.directory
208
207
  - lib/img/account_data_access.png
209
208
  - lib/img/config_data_access.png
@@ -217,37 +216,25 @@ files:
217
216
  - lib/lorj_meta.rb
218
217
  - lib/overview.md
219
218
  - lib/prc.rb
220
- - lib/prc_base_config.rb
221
- - lib/prc_core_config.rb
222
- - lib/prc_section_config.rb
223
- - lib/providers/hpcloud/compute.rb
224
- - lib/providers/hpcloud/hpcloud.rb
225
- - lib/providers/hpcloud/network.rb
226
- - lib/providers/hpcloud/security_groups.rb
227
219
  - lib/providers/mock/mock.rb
228
- - lib/providers/openstack/openstack.rb
229
- - lib/providers/openstack/openstack_create.rb
230
- - lib/providers/openstack/openstack_delete.rb
231
- - lib/providers/openstack/openstack_get.rb
232
- - lib/providers/openstack/openstack_process.rb
233
- - lib/providers/openstack/openstack_query.rb
234
- - lib/providers/openstack/openstack_update.rb
235
220
  - lib/providers/templates/compute.rb
236
221
  - lib/providers/templates/mycloud.rb
237
222
  - lib/providers/templates/network.rb
238
- - lib/rh.rb
223
+ - lorj-spec/controllers/mock/mock.rb
224
+ - lorj-spec/data.yaml
239
225
  - lorj-spec/defaults.yaml
226
+ - lorj-spec/process/mock2_process.rb
227
+ - lorj-spec/process/mock_process.rb
228
+ - lorj-spec/providers/mock2/mock2.rb
240
229
  - lorj.gemspec
241
- - spec/01_hash_rh_spec.rb
242
- - spec/02_prc_base_config_spec.rb
243
- - spec/03_prc_section_config_spec.rb
244
- - spec/04_prc_core_config_spec.rb
230
+ - spec/05_lorj_keypath_spec.rb
245
231
  - spec/09_prc_spec.rb
246
232
  - spec/10_lorj_log_spec.rb
247
233
  - spec/11_lorj_defaults_spec.rb
248
234
  - spec/12_lorj_config_spec.rb
249
235
  - spec/13_lorj_account_spec.rb
250
236
  - spec/20_lorj_meta_spec.rb
237
+ - spec/21_lorj_processes_spec.rb
251
238
  homepage: https://github.com/forj-oss/lorj
252
239
  licenses:
253
240
  - Apache License, Version 2.0.
@@ -275,14 +262,12 @@ signing_key:
275
262
  specification_version: 4
276
263
  summary: Process Controllers framework system
277
264
  test_files:
278
- - spec/01_hash_rh_spec.rb
279
- - spec/02_prc_base_config_spec.rb
280
- - spec/03_prc_section_config_spec.rb
281
- - spec/04_prc_core_config_spec.rb
265
+ - spec/05_lorj_keypath_spec.rb
282
266
  - spec/09_prc_spec.rb
283
267
  - spec/10_lorj_log_spec.rb
284
268
  - spec/11_lorj_defaults_spec.rb
285
269
  - spec/12_lorj_config_spec.rb
286
270
  - spec/13_lorj_account_spec.rb
287
271
  - spec/20_lorj_meta_spec.rb
272
+ - spec/21_lorj_processes_spec.rb
288
273
  has_rdoc:
@@ -1,60 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- # It requires Core objects to be defined + default ForjProcess functions.
19
-
20
- # Common definition
21
- class Lorj::BaseDefinition # rubocop: disable Style/ClassAndModuleChildren
22
- # All objects used by this process are built from a Controller
23
- process_default :use_controller => true
24
- end
25
-
26
- # Class to manage retry on errors before failing
27
- class SSLErrorMgt
28
- def initialize(iMaxRetry = 5)
29
- @retry = 0
30
- @max_retry = iMaxRetry
31
- end
32
-
33
- def wait(message, issue = nil)
34
- if @retry < @max_retry
35
- sleep(2)
36
- @retry += 1
37
- if PrcLib.level == 0
38
- msg = format('%s/%s try... ', @retry, @max_retry)
39
- msg += issue unless issue.nil?
40
- print msg
41
- end
42
- return false
43
- else
44
- PrcLib.error('Too many retry. %s', message)
45
- return true
46
- end
47
- end
48
-
49
- def error_detected(message, backtrace, e)
50
- if message.match('SSLv2/v3 read server hello A: unknown protocol')
51
- return wait(message, "'unknown protocol' SSL Error")
52
- elsif e.is_a?(Excon::Errors::InternalServerError)
53
- return wait(message, ANSI.red(e.class))
54
- else
55
- PrcLib.error("Exception %s: %s\n%s", e.class, message,
56
- backtrace.join("\n"))
57
- return true
58
- end
59
- end
60
- end
@@ -1,92 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
-
18
- # It requires Core objects to be defined + default ForjProcess functions.
19
-
20
- # rubocop: disable Style/ClassAndModuleChildren
21
-
22
- # Connection process code
23
- class CloudProcess
24
- def connect(sCloudObj, hParams)
25
- ssl_error_obj = SSLErrorMgt.new # Retry object
26
- PrcLib.debug("%s:%s Connecting to '%s' "\
27
- "- Project '%s'",
28
- self.class, sCloudObj, config[:provider], hParams[:tenant])
29
- begin
30
- controller_connect(sCloudObj)
31
- rescue => e
32
- retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
33
-
34
- PrcLib.error('%s:%s: Unable to connect.\n%s',
35
- self.class, sCloudObj, e.message)
36
- nil
37
- end
38
- end
39
- end
40
-
41
- # Define services model
42
- class Lorj::BaseDefinition
43
- # predefined list of objects.
44
- # Links between objects is not predefined. To do it, use needs declaration
45
- # in your provider class.
46
-
47
- # object to get list of services
48
- # Defines Process handler to call
49
- define_obj(:services,
50
-
51
- :create_e => :connect
52
- )
53
- obj_needs :data, :auth_uri
54
- obj_needs :data, :account_id
55
- obj_needs :data, :account_key
56
- obj_needs :data, :tenant
57
-
58
- undefine_attribute :id # Do not return any predefined ID
59
- undefine_attribute :name # Do not return any predefined NAME
60
- end
61
-
62
- # compute_connection
63
- class Lorj::BaseDefinition
64
- define_obj(:compute_connection,
65
-
66
- :create_e => :connect # Will call ForjProcess connect
67
- )
68
- obj_needs :data, :account_id
69
- obj_needs :data, :account_key
70
- obj_needs :data, :auth_uri
71
- obj_needs :data, :tenant
72
- obj_needs :data, :compute
73
-
74
- undefine_attribute :id # Do not return any predefined ID
75
- undefine_attribute :name # Do not return any predefined NAME
76
- end
77
-
78
- # network_connection
79
- class Lorj::BaseDefinition
80
- define_obj(:network_connection,
81
-
82
- :create_e => :connect
83
- )
84
- obj_needs :data, :account_id
85
- obj_needs :data, :account_key
86
- obj_needs :data, :auth_uri
87
- obj_needs :data, :tenant
88
- obj_needs :data, :network
89
-
90
- undefine_attribute :id # Do not return any predefined ID
91
- undefine_attribute :name # Do not return any predefined NAME
92
- end
@@ -1,90 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
- # It requires Core objects to be defined + default ForjProcess functions.
18
-
19
- # rubocop: disable Style/ClassAndModuleChildren
20
-
21
- # External network process attached to a network
22
- class CloudProcess
23
- def forj_get_or_create_ext_net(sCloudObj, hParams)
24
- PrcLib.state("Checking router '%s' gateway", hParams[:router, :name])
25
-
26
- router_obj = hParams[:router]
27
- router_name = hParams[:router, :name]
28
- network_id = hParams[:router, :gateway_network_id]
29
- if network_id
30
- external_network = forj_query_external_network(sCloudObj,
31
- { :id => network_id },
32
- hParams)
33
- PrcLib.info("Router '%s' is attached to the "\
34
- "external gateway '%s'.", router_name,
35
- external_network[:name])
36
- else
37
- PrcLib.info("Router '%s' needs to be attached to an "\
38
- 'external gateway.', router_name)
39
- PrcLib.state('Attaching')
40
- external_network = forj_query_external_network(:network, {}, hParams)
41
- if !external_network.empty?
42
- router_obj[:gateway_network_id] = external_network[:id]
43
- controller_update(:router, router_obj)
44
- PrcLib.info("Router '%s' attached to the "\
45
- "external network '%s'.",
46
- router_name, external_network[:name])
47
- else
48
- PrcLib.fatal(1, "Unable to attach router '%s' to an external gateway. "\
49
- 'Required for boxes to get internet access. ',
50
- get_data(:router, :name))
51
- end
52
- end
53
-
54
- # Need to keep the :network object as :external_network object type.
55
- external_network.type = sCloudObj
56
- external_network
57
- end
58
-
59
- def forj_query_external_network(_sCloudObj, sQuery, _hParams)
60
- PrcLib.state('Identifying External gateway')
61
- begin
62
- # Searching for external network
63
- query = sQuery.merge(:external => true)
64
- info = {
65
- :notfound => 'No external network found',
66
- :checkmatch => 'Found 1 %s. Checking if it is an %s.',
67
- :nomatch => 'No %s identified as %s match',
68
- :found => "Found external %s '%s'.",
69
- :more => 'Found several %s. Searching for the first one to be an %s.'
70
- }
71
- networks = query_single(:network, query, 'external network', info)
72
- return Lorj::Data.new if networks.length == 0
73
- networks[0]
74
- rescue => e
75
- PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
76
- end
77
- end
78
- end
79
-
80
- # Identify an external network thanks to the network router.
81
- class Lorj::BaseDefinition
82
- define_obj(:external_network,
83
-
84
- :create_e => :forj_get_or_create_ext_net,
85
- :query_e => :forj_query_external_network
86
- )
87
-
88
- obj_needs :CloudObject, :network_connection
89
- obj_needs :CloudObject, :router
90
- end