lorj 0.2.0 → 1.0.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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +46 -0
  4. data/Gemfile +15 -15
  5. data/README.md +22 -17
  6. data/Rakefile +12 -2
  7. data/bin/cloud_test.rb +13 -65
  8. data/example/students_1/process/students.rb +39 -0
  9. data/example/students_1/students.rb +22 -5
  10. data/example/students_2/process/students.rb +48 -0
  11. data/example/students_2/students.rb +39 -16
  12. data/example/students_3/controller/yaml_students.rb +50 -43
  13. data/example/students_3/controller/yaml_students_controller.rb +100 -87
  14. data/example/students_3/process/students.rb +161 -97
  15. data/example/students_3/students.rb +85 -56
  16. data/example/yaml_students/students.rb +40 -40
  17. data/example/yaml_students/yaml_students.rb +103 -90
  18. data/lib/core/core.rb +356 -696
  19. data/lib/core/core_controller.rb +227 -0
  20. data/lib/core/core_internal.rb +339 -0
  21. data/lib/core/core_model.rb +328 -0
  22. data/lib/core/core_object_data.rb +330 -0
  23. data/lib/core/core_object_params.rb +230 -0
  24. data/lib/core/core_process.rb +391 -0
  25. data/lib/core/core_process_setup.rb +353 -0
  26. data/lib/core/core_setup_ask.rb +241 -0
  27. data/lib/core/core_setup_encrypt.rb +146 -0
  28. data/lib/core/core_setup_init.rb +229 -0
  29. data/lib/core/core_setup_list.rb +160 -0
  30. data/lib/core/definition.rb +647 -469
  31. data/lib/core/definition_internal.rb +264 -308
  32. data/lib/core/lorj_basecontroller.rb +95 -0
  33. data/lib/core/lorj_basedefinition.rb +307 -0
  34. data/lib/core/lorj_baseprocess.rb +265 -0
  35. data/lib/core/lorj_data.rb +583 -0
  36. data/lib/core/lorj_keypath.rb +119 -0
  37. data/lib/core_process/cloud/process/common.rb +63 -0
  38. data/lib/core_process/cloud/process/connection.rb +93 -0
  39. data/lib/core_process/cloud/process/external_network.rb +94 -0
  40. data/lib/core_process/cloud/process/flavor.rb +99 -0
  41. data/lib/core_process/cloud/process/images.rb +87 -0
  42. data/lib/core_process/cloud/process/internet_network.rb +34 -0
  43. data/lib/core_process/cloud/process/internet_server.rb +30 -0
  44. data/lib/core_process/cloud/process/keypairs.rb +276 -0
  45. data/lib/core_process/cloud/process/network.rb +108 -0
  46. data/lib/core_process/cloud/process/public_ip.rb +100 -0
  47. data/lib/core_process/cloud/process/router.rb +260 -0
  48. data/lib/core_process/cloud/process/rules.rb +120 -0
  49. data/lib/core_process/cloud/process/security_groups.rb +121 -0
  50. data/lib/core_process/cloud/process/server.rb +127 -0
  51. data/lib/core_process/cloud/process/server_log.rb +35 -0
  52. data/lib/core_process/cloud/process/subnetwork.rb +108 -0
  53. data/lib/core_process/cloud_process.rb +30 -0
  54. data/lib/logging.rb +298 -0
  55. data/lib/lorj/version.rb +18 -1
  56. data/lib/lorj.rb +58 -18
  57. data/lib/lorj_account.rb +556 -0
  58. data/lib/lorj_config.rb +468 -0
  59. data/lib/lorj_defaults.rb +278 -0
  60. data/lib/prc.rb +136 -104
  61. data/lib/prc_base_config.rb +285 -0
  62. data/lib/prc_core_config.rb +878 -0
  63. data/lib/prc_section_config.rb +57 -0
  64. data/lib/providers/hpcloud/compute.rb +81 -93
  65. data/lib/providers/hpcloud/hpcloud.rb +462 -0
  66. data/lib/providers/hpcloud/network.rb +96 -98
  67. data/lib/providers/hpcloud/security_groups.rb +41 -40
  68. data/lib/providers/mock/mock.rb +144 -0
  69. data/lib/providers/openstack/openstack.rb +45 -0
  70. data/lib/providers/templates/compute.rb +21 -23
  71. data/lib/providers/templates/mycloud.rb +72 -0
  72. data/lib/providers/templates/network.rb +11 -12
  73. data/lib/rh.rb +339 -0
  74. data/lorj-spec/defaults.yaml +4 -0
  75. data/lorj.gemspec +6 -0
  76. data/spec/00_lorj_log_spec.rb +53 -0
  77. data/spec/01_hash_rh_spec.rb +243 -0
  78. data/spec/02_prc_base_config_spec.rb +216 -0
  79. data/spec/04_prc_core_config_spec.rb +83 -0
  80. data/spec/11_lorj_config_spec.rb +263 -0
  81. data/spec/12_lorj_account_spec.rb +181 -0
  82. metadata +76 -28
  83. data/Gemfile.lock +0 -37
  84. data/example/students_1/process/Students.rb +0 -20
  85. data/example/students_2/process/Students.rb +0 -27
  86. data/example/students_4/controller/yaml_students.rb +0 -82
  87. data/example/students_4/controller/yaml_students_controller.rb +0 -141
  88. data/example/students_4/process/students.rb +0 -112
  89. data/example/students_4/students.rb +0 -103
  90. data/lib/core/lorj-basecontroller.rb +0 -90
  91. data/lib/core/lorj-basedefinition.rb +0 -1139
  92. data/lib/core/lorj-baseprocess.rb +0 -236
  93. data/lib/core/lorj-data.rb +0 -567
  94. data/lib/core/lorj-keypath.rb +0 -115
  95. data/lib/core_process/CloudProcess.rb +0 -337
  96. data/lib/core_process/global_process.rb +0 -502
  97. data/lib/core_process/network_process.rb +0 -605
  98. data/lib/prc-account.rb +0 -339
  99. data/lib/prc-config.rb +0 -1030
  100. data/lib/prc-logging.rb +0 -261
  101. data/lib/providers/hpcloud/Hpcloud.rb +0 -426
  102. data/lib/providers/mock/Mock.rb +0 -141
  103. data/lib/providers/openstack/Openstack.rb +0 -47
  104. data/lib/providers/templates/core.rb +0 -61
  105. data/spec/forj-account_spec.rb +0 -75
  106. data/spec/forj-config_spec.rb +0 -196
@@ -1,337 +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
- require File.join(PrcLib.process_path, "global_process.rb")
21
- require File.join(PrcLib.process_path, "network_process.rb")
22
-
23
- # Define framework object on BaseDefinition
24
- class Lorj::BaseDefinition
25
-
26
- # All objects used by this process are built from a Controller
27
- process_default :use_controller => true
28
-
29
- # predefined list of objects.
30
- # Links between objects is not predefined. To do it, use needs declaration in your provider class.
31
-
32
- # object to get list of services
33
- # Defines Process handler to call
34
- define_obj(:services,
35
- {
36
- :create_e => :connect
37
- })
38
- obj_needs :data, :auth_uri
39
- obj_needs :data, :account_id
40
- obj_needs :data, :account_key
41
- obj_needs :data, :tenant
42
-
43
- undefine_attribute :id # Do not return any predefined ID
44
- undefine_attribute :name # Do not return any predefined NAME
45
-
46
-
47
- # compute_connection
48
- define_obj(:compute_connection,
49
- {
50
- :create_e => :connect # Will call ForjProcess connect
51
- })
52
- obj_needs :data, :account_id
53
- obj_needs :data, :account_key
54
- obj_needs :data, :auth_uri
55
- obj_needs :data, :tenant
56
- obj_needs :data, :compute
57
-
58
- undefine_attribute :id # Do not return any predefined ID
59
- undefine_attribute :name # Do not return any predefined NAME
60
-
61
- # network_connection
62
- define_obj(:network_connection,
63
- {
64
- :create_e => :connect
65
- })
66
- obj_needs :data, :account_id
67
- obj_needs :data, :account_key
68
- obj_needs :data, :auth_uri
69
- obj_needs :data, :tenant
70
- obj_needs :data, :network
71
-
72
- undefine_attribute :id # Do not return any predefined ID
73
- undefine_attribute :name # Do not return any predefined NAME
74
-
75
- # ************************************ Network Object
76
- # Identify the network
77
-
78
- define_obj(:network,
79
- :create_e => :forj_get_or_create_network,
80
- :query_e => :forj_query_network,
81
- :get_e => :forj_get_network,
82
- :delete_e => :forj_delete_network
83
- )
84
- obj_needs :CloudObject, :network_connection
85
- obj_needs :data, :network_name, { :for => [:create_e] }
86
-
87
- obj_needs_optional
88
- obj_needs :data, :subnetwork_name, { :for => [:create_e] }
89
-
90
- def_query_attribute :external # true if network is external or not.
91
-
92
- # ************************************ SubNetwork Object
93
- # Identify subnetwork as part of network.
94
- define_obj(:subnetwork,
95
- :create_e => :forj_get_or_create_subnetwork
96
- )
97
-
98
- obj_needs :CloudObject, :network_connection
99
- obj_needs :CloudObject, :network
100
- obj_needs :data, :subnetwork_name
101
-
102
- def_query_attribute :network_id
103
-
104
- # ************************************ Port Object
105
- # Identify port attached to network
106
- define_obj :port, :nohandler => true
107
-
108
- obj_needs :CloudObject, :network_connection
109
- def_attribute :device_id
110
-
111
- def_query_attribute :network_id
112
- def_query_attribute :device_owner
113
-
114
-
115
- # ************************************ Router Object
116
- # Identify the router of a network.
117
- define_obj(:router,
118
- {
119
- :create_e => :forj_get_or_create_router,
120
- # :query_e => :forj_query_router,
121
- # :get_e => :forj_get_router,
122
- :update_e => :forj_update_router
123
- # :delete_e => :forj_delete_router
124
- })
125
- obj_needs :CloudObject, :network_connection
126
- obj_needs :CloudObject, :network, { :for => [:create_e] }
127
- obj_needs :CloudObject, :subnetwork, { :for => [:create_e] }
128
- obj_needs_optional
129
- obj_needs :data, :router_name, { :for => [:create_e] }
130
-
131
- def_attribute :gateway_network_id
132
-
133
- # ************************************ Router interface Object
134
- # Identify interface attached to a router
135
- # This object will probably be moved to controller task
136
- # To keep the network model more generic.
137
-
138
- # No process handler defined. Just Controller object
139
- define_obj :router_interface, :nohandler => true
140
-
141
- obj_needs :CloudObject, :network_connection
142
- obj_needs :CloudObject, :router, { :for => [:create_e] }
143
- obj_needs :CloudObject, :subnetwork, { :for => [:create_e] }
144
-
145
- undefine_attribute :name
146
- undefine_attribute :id
147
-
148
- # Identify an external network thanks to the network router.
149
- define_obj(:external_network,
150
- {
151
- :create_e => :forj_get_or_create_ext_net,
152
- :query_e => :forj_query_external_network
153
- })
154
-
155
- obj_needs :CloudObject, :network_connection
156
- obj_needs :CloudObject, :router
157
-
158
-
159
- # ************************************ Security groups Object
160
- # Identify security_groups
161
- define_obj(:security_groups,
162
- {
163
- :create_e => :forj_get_or_create_sg,
164
- :query_e => :forj_query_sg,
165
- :delete_e => :forj_delete_sg
166
- })
167
-
168
- obj_needs :CloudObject, :network_connection
169
- obj_needs :data, :security_group, { :for => [:create_e] }
170
- obj_needs_optional
171
- obj_needs :data, :sg_desc, { :for => [:create_e] }
172
-
173
- # ************************************ Security group rules Object
174
- # Identify Rules attached to the security group
175
- define_obj(:rule,
176
- {
177
- :create_e => :forj_get_or_create_rule,
178
- :query_e => :forj_query_rule
179
- # :delete_e => :forj_delete_rule
180
- })
181
-
182
- undefine_attribute :name # Do not return any predefined name attribute
183
-
184
- obj_needs :CloudObject, :network_connection
185
- obj_needs :CloudObject, :security_groups, { :for => [:create_e] }
186
- obj_needs :data, :sg_id, { :for => [:create_e], :extract_from => [:security_groups, :attrs, :id] }
187
- obj_needs :data, :dir, { :for => [:create_e] }
188
- predefine_data_value :IN, { :desc => "Input NAT/firewall rule map type" }
189
- predefine_data_value :OUT, { :desc => "Output NAT/firewall rule map type" }
190
- obj_needs :data, :proto, { :for => [:create_e] }
191
- obj_needs :data, :port_min, { :for => [:create_e] }
192
- obj_needs :data, :port_max, { :for => [:create_e] }
193
- obj_needs :data, :addr_map, { :for => [:create_e] }
194
-
195
- # ************************************ keypairs Object
196
- # Identify keypairs
197
- define_obj(:keypairs,
198
- {
199
- :create_e => :forj_get_or_create_keypair,
200
- :query_e => :forj_query_keypair,
201
- :get_e => :forj_get_keypair
202
- # :delete_e => :forj_delete_keypair
203
- })
204
-
205
- obj_needs :CloudObject, :compute_connection
206
- obj_needs :data, :keypair_name, { :for => [:create_e] }
207
- obj_needs :data, :keypair_path, { :for => [:create_e] }
208
-
209
- obj_needs_optional
210
- obj_needs :data, :public_key, { :for => [:create_e] }
211
-
212
- def_attribute :public_key
213
-
214
- # ************************************ Image Object
215
- # Identify image
216
- define_obj(:image,
217
- {
218
- :create_e => :forj_get_or_create_image,
219
- :query_e => :forj_query_image
220
- # :get_e => :forj_get_image
221
- # :update_e => :forj_update_image
222
- # :delete_e => :forj_delete_image
223
- })
224
-
225
- obj_needs :CloudObject, :compute_connection
226
- obj_needs :data, :image_name, { :for => [:create_e] }
227
-
228
- # ************************************ Flavor Object
229
- # Identify flavor
230
- define_obj(:flavor,
231
- {
232
- :create_e => :forj_get_or_create_flavor,
233
- :query_e => :forj_query_flavor
234
- # :get_e => :forj_get_flavor,
235
- # :update_e => :forj_update_flavor,
236
- # :delete_e => :forj_delete_flavor
237
- })
238
-
239
- obj_needs :CloudObject, :compute_connection
240
- obj_needs :data, :flavor_name, { :for => [:create_e] }
241
- # Cloud provider will need to map to one of those predefined flavors.
242
- # limitation values may match exactly or at least ensure those limitation
243
- # are under provider limitation
244
- # ie, at least the CloudProcess limitation can less than the Cloud provider defines.
245
- # CloudProcess EHD = 160, then Provider EHD = 200 is ok
246
- # but Provider EHD = 150 is not ok.
247
- predefine_data_value('tiny', { :desc => "VCU: 1, RAM:512M, HD:1G, EHD: 0G, Swap: 0G" })
248
- predefine_data_value('xsmall', { :desc => "VCU: 1, RAM:1G, HD:10G, EHD: 10G, Swap: 0G" })
249
- predefine_data_value('small', { :desc => "VCU: 2, RAM:2G, HD:30G, EHD: 10G, Swap: 0G" })
250
- predefine_data_value('medium', { :desc => "VCU: 2, RAM:4G, HD:30G, EHD: 50G, Swap: 0G" })
251
- predefine_data_value('large', { :desc => "VCU: 4, RAM:8G, HD:30G, EHD: 100G, Swap: 0G" })
252
- predefine_data_value('xlarge', { :desc => "VCU: 8, RAM:16G, HD:30G, EHD: 200G, Swap: 0G" })
253
-
254
- # ************************************ Internet network Object
255
- # Define Internet network
256
- #
257
- # This object contains the logic to ensure the router's network has a gateway to the external network (internet)
258
- # is capable to connect to internet
259
- # And to create this connection if possible.
260
-
261
- define_obj(:internet_network, :nohandler => true )
262
-
263
- obj_needs :CloudObject, :external_network # External network to connect if needed.
264
-
265
- # ************************************ SERVER Object
266
- # Identify the server to use/build on the network/...
267
- define_obj(:server,
268
- {
269
- :create_e => :forj_get_or_create_server,
270
- :query_e => :forj_query_server,
271
- :get_e => :forj_get_server,
272
- # :update_e => :forj_update_server,
273
- :delete_e => :forj_delete_server
274
- })
275
-
276
- obj_needs :CloudObject, :compute_connection
277
- obj_needs :CloudObject, :flavor, { :for => [:create_e] }
278
- obj_needs :CloudObject, :network, { :for => [:create_e] }
279
- obj_needs :CloudObject, :security_groups, { :for => [:create_e] }
280
- obj_needs :CloudObject, :keypairs, { :for => [:create_e] }
281
- obj_needs :CloudObject, :image, { :for => [:create_e] }
282
- obj_needs :data, :server_name, { :for => [:create_e] }
283
-
284
- obj_needs_optional
285
- obj_needs :data, :user_data, { :for => [:create_e] }
286
- obj_needs :data, :meta_data, { :for => [:create_e] }
287
-
288
- def_attribute :status
289
- predefine_data_value :create, { :desc => "Server is creating." }
290
- predefine_data_value :boot, { :desc => "Server is booting." }
291
- predefine_data_value :active, { :desc => "Server is started." }
292
- def_attribute :private_ip_address
293
- def_attribute :public_ip_address
294
-
295
- def_attribute :image_id
296
- def_attribute :key_name
297
- # ************************************ SERVER Addresses Object
298
- # Object representing the list of IP addresses attached to a server.
299
- define_obj(:public_ip,
300
- :create_e => :forj_get_or_assign_public_address,
301
- :query_e => :forj_query_public_address
302
- # :get_e => :forj_get_address
303
- # :update_e => :forj_update_address
304
- # :delete_e => :forj_delete_address
305
- )
306
-
307
- obj_needs :CloudObject, :compute_connection
308
- obj_needs :CloudObject, :server
309
-
310
- def_attribute :server_id
311
- def_attribute :public_ip
312
- undefine_attribute :name # No name to extract
313
-
314
- # ************************************ SERVER Console Object
315
- # Object representing the console log attached to a server
316
-
317
- define_obj(:server_log,
318
- {
319
- :get_e => :forj_get_server_log
320
- })
321
-
322
- obj_needs :CloudObject, :server
323
- obj_needs :data, :log_lines
324
- undefine_attribute :name
325
- undefine_attribute :id
326
- def_attribute :output
327
-
328
- # ************************************ Internet SERVER Object
329
- # internet server is a server connected to the internet network.
330
- define_obj(:internet_server, :nohandler => true )
331
-
332
- obj_needs :CloudObject, :internet_network
333
- obj_needs :CloudObject, :server
334
- obj_needs :CloudObject, :public_ip
335
-
336
-
337
- end