lorj 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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