lorj 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/example/students_1/students.rb +5 -6
  3. data/example/students_2/students.rb +4 -5
  4. data/example/students_3/students.rb +4 -5
  5. data/example/students_4/students.rb +4 -5
  6. data/example/students_5/students.rb +5 -5
  7. data/lib/core/core.rb +6 -1
  8. data/lib/core/core_controller.rb +1 -9
  9. data/lib/core/core_internal.rb +2 -1
  10. data/lib/core/core_model.rb +2 -10
  11. data/lib/core/core_object_data.rb +18 -0
  12. data/lib/core/core_object_params.rb +43 -4
  13. data/lib/core/core_process.rb +1 -9
  14. data/lib/core/core_process_setup.rb +32 -6
  15. data/lib/core/core_setup_ask.rb +41 -33
  16. data/lib/core/core_setup_encrypt.rb +29 -6
  17. data/lib/core/core_setup_init.rb +2 -2
  18. data/lib/core/definition.rb +33 -10
  19. data/lib/core/definition_internal.rb +10 -14
  20. data/lib/core/lorj_basedefinition.rb +16 -24
  21. data/lib/core/lorj_baseprocess.rb +113 -44
  22. data/lib/core/lorj_data.rb +2 -9
  23. data/lib/core/lorj_keypath.rb +5 -2
  24. data/lib/core_process/cloud/process/common.rb +4 -7
  25. data/lib/core_process/cloud/process/connection.rb +44 -45
  26. data/lib/core_process/cloud/process/external_network.rb +24 -28
  27. data/lib/core_process/cloud/process/flavor.rb +31 -34
  28. data/lib/core_process/cloud/process/images.rb +12 -15
  29. data/lib/core_process/cloud/process/internet_network.rb +13 -14
  30. data/lib/core_process/cloud/process/internet_server.rb +9 -10
  31. data/lib/core_process/cloud/process/keypairs.rb +34 -27
  32. data/lib/core_process/cloud/process/network.rb +21 -23
  33. data/lib/core_process/cloud/process/public_ip.rb +17 -18
  34. data/lib/core_process/cloud/process/router.rb +86 -92
  35. data/lib/core_process/cloud/process/rules.rb +30 -31
  36. data/lib/core_process/cloud/process/security_groups.rb +21 -22
  37. data/lib/core_process/cloud/process/server.rb +30 -31
  38. data/lib/core_process/cloud/process/server_log.rb +13 -14
  39. data/lib/core_process/cloud/process/subnetwork.rb +25 -40
  40. data/lib/logging.rb +4 -17
  41. data/lib/lorj/version.rb +1 -1
  42. data/lib/lorj.rb +2 -1
  43. data/lib/lorj_account.rb +137 -90
  44. data/lib/lorj_config.rb +13 -19
  45. data/lib/lorj_defaults.rb +46 -292
  46. data/lib/lorj_meta.rb +729 -0
  47. data/lib/prc.rb +119 -30
  48. data/lib/prc_base_config.rb +53 -47
  49. data/lib/prc_core_config.rb +837 -565
  50. data/lib/prc_section_config.rb +44 -16
  51. data/lib/providers/hpcloud/hpcloud.rb +1 -1
  52. data/lib/providers/openstack/openstack.rb +278 -21
  53. data/lib/providers/openstack/openstack_create.rb +205 -0
  54. data/lib/providers/openstack/openstack_delete.rb +28 -0
  55. data/lib/providers/openstack/openstack_get.rb +39 -0
  56. data/lib/providers/openstack/openstack_process.rb +26 -0
  57. data/lib/providers/openstack/openstack_query.rb +96 -0
  58. data/lib/providers/openstack/openstack_update.rb +35 -0
  59. data/lib/rh.rb +91 -6
  60. data/lorj-spec/defaults.yaml +18 -12
  61. data/lorj.gemspec +1 -0
  62. data/spec/01_hash_rh_spec.rb +41 -2
  63. data/spec/02_prc_base_config_spec.rb +1 -1
  64. data/spec/03_prc_section_config_spec.rb +1 -1
  65. data/spec/04_prc_core_config_spec.rb +148 -4
  66. data/spec/09_prc_spec.rb +104 -0
  67. data/spec/{00_lorj_log_spec.rb → 10_lorj_log_spec.rb} +23 -2
  68. data/spec/11_lorj_config_spec.rb +9 -27
  69. data/spec/12_lorj_account_spec.rb +36 -20
  70. data/spec/20_lorj_meta_spec.rb +271 -0
  71. data/spec/21_lorj_defaults_spec.rb +85 -0
  72. metadata +31 -4
@@ -15,6 +15,9 @@
15
15
  # limitations under the License.
16
16
 
17
17
  # It requires Core objects to be defined + default ForjProcess functions.
18
+
19
+ # rubocop: disable Style/ClassAndModuleChildren
20
+
18
21
  # ---------------------------------------------------------------------------
19
22
  # Router management
20
23
  # ---------------------------------------------------------------------------
@@ -23,75 +26,72 @@ class CloudProcess
23
26
  def forj_get_or_create_router(_sCloudObj, hParams)
24
27
  sub_net_obj = hParams[:subnetwork]
25
28
 
26
- unless hParams[:router_name]
27
- config[:router_name] = 'router-%s', hParams[:network, :name]
28
- hParams[:router_name] = config[:router_name]
29
+ if hParams[:router_name].nil?
30
+ router_name = format('router-%s', hParams[:network, :name])
31
+ else
32
+ router_name = hParams[:router_name]
29
33
  end
30
34
 
31
- router_name = hParams[:router_name]
32
35
  router_port = get_router_interface_attached(:port, hParams)
33
36
 
34
- if !router_port
37
+ if router_port.length == 0
35
38
  # Trying to get router
36
39
  router = get_router(router_name)
37
- router = create_router(router_name) unless router
40
+ router = create_router(router_name) if router.empty?
38
41
  create_router_interface(sub_net_obj, router) if router
39
42
  else
40
- router = query_router_from_port(router_port, hParams)
43
+ router = query_router_from_port(router_port[0], hParams)
41
44
  end
42
45
  router
43
46
  end
44
47
  end
45
48
 
46
- # Define framework object on BaseDefinition
47
- module Lorj
48
- # ************************************ Router Object
49
- # Identify the router of a network.
50
- class BaseDefinition
51
- define_obj(:router,
52
-
53
- :create_e => :forj_get_or_create_router,
54
- # :query_e => :forj_query_router,
55
- # :get_e => :forj_get_router,
56
- :update_e => :controller_update
57
- # :delete_e => :forj_delete_router
58
- )
59
- obj_needs :CloudObject, :network_connection
60
- obj_needs :CloudObject, :network, :for => [:create_e]
61
- obj_needs :CloudObject, :subnetwork, :for => [:create_e]
62
- obj_needs_optional
63
- obj_needs :data, :router_name, :for => [:create_e]
64
-
65
- def_attribute :gateway_network_id
66
- end
49
+ # Router Object
50
+ # Identify the router of a network.
51
+ class Lorj::BaseDefinition
52
+ define_obj(:router,
53
+
54
+ :create_e => :forj_get_or_create_router,
55
+ # :query_e => :forj_query_router,
56
+ # :get_e => :forj_get_router,
57
+ :update_e => :controller_update
58
+ # :delete_e => :forj_delete_router
59
+ )
60
+ obj_needs :CloudObject, :network_connection
61
+ obj_needs :CloudObject, :network, :for => [:create_e]
62
+ obj_needs :CloudObject, :subnetwork, :for => [:create_e]
63
+ obj_needs_optional
64
+ obj_needs :data, :router_name, :for => [:create_e]
65
+
66
+ def_attribute :gateway_network_id
67
+ end
67
68
 
68
- # ************************************ Port Object
69
- # Identify port attached to network
70
- class BaseDefinition
71
- define_obj :port, :nohandler => true
69
+ # Port Object
70
+ # Identify port attached to network
71
+ class Lorj::BaseDefinition
72
+ define_obj :port, :nohandler => true
72
73
 
73
- obj_needs :CloudObject, :network_connection
74
- def_attribute :device_id
74
+ obj_needs :CloudObject, :network_connection
75
+ def_attribute :device_id
75
76
 
76
- def_query_attribute :network_id
77
- def_query_attribute :device_owner
78
- end
77
+ def_attribute :network_id
78
+ def_attribute :device_owner
79
+ end
79
80
 
80
- # ************************************ Router interface Object
81
- # Identify interface attached to a router
82
- # This object will probably be moved to controller task
83
- # To keep the network model more generic.
84
- class BaseDefinition
85
- # No process handler defined. Just Controller object
86
- define_obj :router_interface, :nohandler => true
81
+ # Router interface Object
82
+ # Identify interface attached to a router
83
+ # This object will probably be moved to controller task
84
+ # To keep the network model more generic.
85
+ class Lorj::BaseDefinition
86
+ # No process handler defined. Just Controller object
87
+ define_obj :router_interface, :nohandler => true
87
88
 
88
- obj_needs :CloudObject, :network_connection
89
- obj_needs :CloudObject, :router, :for => [:create_e]
90
- obj_needs :CloudObject, :subnetwork, :for => [:create_e]
89
+ obj_needs :CloudObject, :network_connection
90
+ obj_needs :CloudObject, :router, :for => [:create_e]
91
+ obj_needs :CloudObject, :subnetwork, :for => [:create_e]
91
92
 
92
- undefine_attribute :name
93
- undefine_attribute :id
94
- end
93
+ undefine_attribute :name
94
+ undefine_attribute :id
95
95
  end
96
96
 
97
97
  # Router Process internal functions
@@ -99,16 +99,12 @@ class CloudProcess
99
99
  def get_router(name)
100
100
  PrcLib.state("Searching for router '%s'", name)
101
101
  begin
102
- routers = controller_query(:router, :name => name)
103
- case routers.length
104
- when 1
105
- routers[0]
106
- else
107
- PrcLib.info("Router '%s' not found.", name)
108
- nil
109
- end
110
- rescue => e
111
- PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
102
+ query = { :name => name }
103
+ routers = query_single(:router, query, name)
104
+ return Lorj::Data.new if routers.length == 0
105
+ register(routers[0])
106
+ rescue => e
107
+ PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
112
108
  end
113
109
  end
114
110
 
@@ -124,7 +120,7 @@ class CloudProcess
124
120
  router_name)
125
121
  end
126
122
 
127
- router = controller_create(:router)
123
+ router = controller_create(:router, :router_name => router_name)
128
124
  if oExternalNetwork
129
125
  PrcLib.info("Router '%s' created and attached to the external "\
130
126
  "Network '%s'.", router_name, ext_net)
@@ -133,8 +129,8 @@ class CloudProcess
133
129
  router_name)
134
130
  end
135
131
  rescue => e
136
- raise ForjError.new, "Unable to create '%s' router\n%s",
137
- router_name, e.message
132
+ PrcLib.error "Unable to create '%s' router\n%s\n%s", router_name,
133
+ e.message, e.backtrace.join("\n")
138
134
  end
139
135
  router
140
136
  end
@@ -150,20 +146,20 @@ class CloudProcess
150
146
  end
151
147
  end
152
148
 
153
- def query_router_from_port(router_port, hParams)
149
+ def query_router_from_port(router_port, _hParams)
154
150
  query = { :id => router_port[:device_id] }
155
- routers = controller_query(:router, query)
156
- case routers.length
157
- when 1
158
- PrcLib.info("Found router '%s' attached to the network '%s'.",
159
- routers[0, :name], hParams[:network, :name])
160
- routers[0]
161
- else
162
- PrcLib.warning('Unable to find the router '\
163
- "id '%s'", router_port[:device_id])
164
- ForjLib::Data.new
165
- end
151
+ info = {
152
+ :notfound => 'No %s for port ID %s found',
153
+ :checkmatch => 'Found 1 %s. Checking exact match for port ID %s.',
154
+ :nomatch => 'No %s for port ID %s match',
155
+ :found => "Found %s '%s' from port ID #{router_port[:device_id]}.",
156
+ :more => 'Found several %s. Searching for port ID %s.'
157
+ }
158
+ routers = query_single(:router, query, router_port[:device_id], info)
159
+ return Lorj::Data.new if routers.length == 0
160
+ register(routers[0])
166
161
  end
162
+
167
163
  # TODO: Move router interface management to hpcloud controller.
168
164
  # Router interface to connect to the network
169
165
  def create_router_interface(oSubnet, router_obj)
@@ -193,28 +189,26 @@ class CloudProcess
193
189
  end
194
190
 
195
191
  def get_router_interface_attached(sCloudObj, hParams)
196
- PrcLib.state("Searching for router port attached to the network '%s'",
197
- hParams[:network, :name])
192
+ name = hParams[:network, :name]
193
+ PrcLib.state("Searching for router port attached to the network '%s'", name)
198
194
  begin
199
195
  # Searching for router port attached
200
196
  #################
201
197
  query = { :network_id => hParams[
202
198
  :network, :id],
203
199
  :device_owner => 'network:router_interface' }
204
-
205
- ports = controller_query(sCloudObj, query)
206
- case ports.length
207
- when 0
208
- PrcLib.info("No router port attached to the network '%s'",
209
- hParams[:network, :name])
210
- nil
211
- else
212
- PrcLib.info("Found a router port attached to the network '%s' ",
213
- hParams[:network, :name])
214
- ports[0]
215
- end
216
- rescue => e
217
- PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
200
+ info = {
201
+ :notfound => "No router %s for network '%s' found",
202
+ :checkmatch => 'Found 1 router %s. '\
203
+ "Checking exact match for network '%s'.",
204
+ :nomatch => "No router %s for network '%s' match",
205
+ :found => "Found router %s ID %s attached to network '#{name}'.",
206
+ :more => "Found several router %s. Searching for network '%s'.",
207
+ :items => [:id]
208
+ }
209
+ query_single(sCloudObj, query, name, info)
210
+ rescue => e
211
+ PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
218
212
  end
219
213
  end
220
214
 
@@ -244,7 +238,7 @@ class CloudProcess
244
238
  case networks.length
245
239
  when 0
246
240
  PrcLib.info('No external network')
247
- ForjLib::Data.new
241
+ Lorj::Data.new
248
242
  when 1
249
243
  PrcLib.info("Found external network '%s'.", networks[0, :name])
250
244
  networks[0]
@@ -16,6 +16,8 @@
16
16
 
17
17
  # It requires Core objects to be defined + default ForjProcess functions.
18
18
 
19
+ # rubocop: disable Style/ClassAndModuleChildren
20
+
19
21
  # SecurityGroups rules management
20
22
  class CloudProcess
21
23
  # Process Delete handler
@@ -58,7 +60,6 @@ class CloudProcess
58
60
  :addr_map => hParams[:addr_map],
59
61
  :sg_id => hParams[:sg_id]
60
62
  }
61
-
62
63
  rules = forj_query_rule(sCloudObj, query, hParams)
63
64
  if rules.length == 0
64
65
  create_rule(sCloudObj, hParams)
@@ -68,35 +69,32 @@ class CloudProcess
68
69
  end
69
70
  end
70
71
 
71
- # Define framework object on BaseDefinition
72
- module Lorj
73
- # ************************************ Security group rules Object
74
- # Identify Rules attached to the security group
75
- class BaseDefinition
76
- define_obj(:rule,
72
+ # Security group rules Object
73
+ # Identify Rules attached to the security group
74
+ class Lorj::BaseDefinition
75
+ define_obj(:rule,
77
76
 
78
- :create_e => :forj_get_or_create_rule,
79
- :query_e => :forj_query_rule
80
- # :delete_e => :forj_delete_rule
81
- )
77
+ :create_e => :forj_get_or_create_rule,
78
+ :query_e => :forj_query_rule
79
+ # :delete_e => :forj_delete_rule
80
+ )
82
81
 
83
- undefine_attribute :name # Do not return any predefined name attribute
82
+ undefine_attribute :name # Do not return any predefined name attribute
84
83
 
85
- obj_needs :CloudObject, :network_connection
86
- obj_needs :CloudObject, :security_groups, :for => [:create_e]
87
- obj_needs :data, :sg_id, :for => [:create_e],
88
- :extract_from => [:security_groups,
89
- :attrs, :id]
84
+ obj_needs :CloudObject, :network_connection
85
+ obj_needs :CloudObject, :security_groups, :for => [:create_e]
86
+ obj_needs :data, :sg_id, :for => [:create_e],
87
+ :extract_from => [:security_groups,
88
+ :attrs, :id]
90
89
 
91
- obj_needs :data, :dir, :for => [:create_e]
92
- predefine_data_value :IN, :desc => 'Input NAT/firewall rule map type'
93
- predefine_data_value :OUT, :desc => 'Output NAT/firewall rule map type'
90
+ obj_needs :data, :dir, :for => [:create_e]
91
+ predefine_data_value :IN, :desc => 'Input NAT/firewall rule map type'
92
+ predefine_data_value :OUT, :desc => 'Output NAT/firewall rule map type'
94
93
 
95
- obj_needs :data, :proto, :for => [:create_e]
96
- obj_needs :data, :port_min, :for => [:create_e]
97
- obj_needs :data, :port_max, :for => [:create_e]
98
- obj_needs :data, :addr_map, :for => [:create_e]
99
- end
94
+ obj_needs :data, :proto, :for => [:create_e]
95
+ obj_needs :data, :port_min, :for => [:create_e]
96
+ obj_needs :data, :port_max, :for => [:create_e]
97
+ obj_needs :data, :addr_map, :for => [:create_e]
100
98
  end
101
99
 
102
100
  # SecurityGroups rules management
@@ -104,17 +102,18 @@ class CloudProcess
104
102
  # Rules internal #
105
103
  #----------------#
106
104
  def create_rule(sCloudObj, hParams)
107
- rule = '%s %s:%s - %s to %s', hParams[:dir], hParams[:rule_proto],
108
- hParams[:port_min], hParams[:port_max],
109
- hParams[:addr_map]
110
- PrcLib.state("Creating rule '%s'", rule)
105
+ rule_msg = format('%s %s:%s - %s to %s',
106
+ hParams[:dir], hParams[:rule_proto],
107
+ hParams[:port_min], hParams[:port_max],
108
+ hParams[:addr_map])
109
+ PrcLib.state("Creating rule '%s'", rule_msg)
111
110
  ssl_error_obj = SSLErrorMgt.new
112
111
  begin
113
112
  rule = controller_create(sCloudObj)
114
- PrcLib.info("Rule '%s' created.", rule)
113
+ PrcLib.info("Rule '%s' created.", rule_msg)
115
114
  rescue StandardError => e
116
115
  retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
117
- PrcLib.error 'error creating the rule for port %s', rule
116
+ PrcLib.error 'error creating the rule "%s"', rule_msg
118
117
  end
119
118
  rule
120
119
  end
@@ -16,6 +16,8 @@
16
16
 
17
17
  # It requires Core objects to be defined + default ForjProcess functions.
18
18
 
19
+ # rubocop: disable Style/ClassAndModuleChildren
20
+
19
21
  # SecurityGroups management
20
22
  class CloudProcess
21
23
  # Process Create handler
@@ -42,14 +44,15 @@ class CloudProcess
42
44
  portmax = (port_found_match[3]) ? (port_found_match[3]) : (portmin)
43
45
  # Need to set runtime data to get or if missing
44
46
  # create the required rule.
45
- config[:dir] = :IN
46
- config[:proto] = 'tcp'
47
- config[:port_min] = portmin.to_i
48
- config[:port_max] = portmax.to_i
49
- config[:addr_map] = '0.0.0.0/0'
47
+ params = {}
48
+ params[:dir] = :IN
49
+ params[:proto] = 'tcp'
50
+ params[:port_min] = portmin.to_i
51
+ params[:port_max] = portmax.to_i
52
+ params[:addr_map] = '0.0.0.0/0'
50
53
 
51
54
  # object.Create(:rule)
52
- process_create(:rule)
55
+ process_create(:rule, params)
53
56
  end
54
57
  end
55
58
  security_group
@@ -87,23 +90,19 @@ class CloudProcess
87
90
  end
88
91
  end
89
92
 
90
- # Define framework object on BaseDefinition
91
- module Lorj
92
- # ************************************ Security groups Object
93
- # Identify security_groups
94
- class BaseDefinition
95
- define_obj(:security_groups,
96
-
97
- :create_e => :forj_get_or_create_sg,
98
- :query_e => :forj_query_sg,
99
- :delete_e => :forj_delete_sg
100
- )
93
+ # ************************************ Security groups Object
94
+ # Identify security_groups
95
+ class Lorj::BaseDefinition
96
+ define_obj(:security_groups,
97
+ :create_e => :forj_get_or_create_sg,
98
+ :query_e => :forj_query_sg,
99
+ :delete_e => :forj_delete_sg
100
+ )
101
101
 
102
- obj_needs :CloudObject, :network_connection
103
- obj_needs :data, :security_group, :for => [:create_e]
104
- obj_needs_optional
105
- obj_needs :data, :sg_desc, :for => [:create_e]
106
- end
102
+ obj_needs :CloudObject, :network_connection
103
+ obj_needs :data, :security_group, :for => [:create_e]
104
+ obj_needs_optional
105
+ obj_needs :data, :sg_desc, :for => [:create_e]
107
106
  end
108
107
 
109
108
  # SecurityGroups Process internal functions #
@@ -16,6 +16,8 @@
16
16
 
17
17
  # It requires Core objects to be defined + default ForjProcess functions.
18
18
 
19
+ # rubocop: disable Style/ClassAndModuleChildren
20
+
19
21
  # ---------------------------------------------------------------------------
20
22
  # Server management
21
23
  # ---------------------------------------------------------------------------
@@ -62,42 +64,39 @@ class CloudProcess
62
64
  end
63
65
  end
64
66
 
65
- # Define framework object on BaseDefinition
66
- module Lorj
67
- # ************************************ SERVER Object
68
- # Identify the server to use/build on the network/...
69
- class BaseDefinition
70
- define_obj(:server,
67
+ # SERVER Object
68
+ # Identify the server to use/build on the network/...
69
+ class Lorj::BaseDefinition
70
+ define_obj(:server,
71
71
 
72
- :create_e => :forj_get_or_create_server,
73
- :query_e => :forj_query_server,
74
- :get_e => :forj_get_server,
75
- # :update_e => :forj_update_server,
76
- :delete_e => :forj_delete_server
77
- )
72
+ :create_e => :forj_get_or_create_server,
73
+ :query_e => :forj_query_server,
74
+ :get_e => :forj_get_server,
75
+ # :update_e => :forj_update_server,
76
+ :delete_e => :forj_delete_server
77
+ )
78
78
 
79
- obj_needs :CloudObject, :compute_connection
80
- obj_needs :CloudObject, :flavor, :for => [:create_e]
81
- obj_needs :CloudObject, :network, :for => [:create_e]
82
- obj_needs :CloudObject, :security_groups, :for => [:create_e]
83
- obj_needs :CloudObject, :keypairs, :for => [:create_e]
84
- obj_needs :CloudObject, :image, :for => [:create_e]
85
- obj_needs :data, :server_name, :for => [:create_e]
79
+ obj_needs :CloudObject, :compute_connection
80
+ obj_needs :CloudObject, :flavor, :for => [:create_e]
81
+ obj_needs :CloudObject, :network, :for => [:create_e]
82
+ obj_needs :CloudObject, :security_groups, :for => [:create_e]
83
+ obj_needs :CloudObject, :keypairs, :for => [:create_e]
84
+ obj_needs :CloudObject, :image, :for => [:create_e]
85
+ obj_needs :data, :server_name, :for => [:create_e]
86
86
 
87
- obj_needs_optional
88
- obj_needs :data, :user_data, :for => [:create_e]
89
- obj_needs :data, :meta_data, :for => [:create_e]
87
+ obj_needs_optional
88
+ obj_needs :data, :user_data, :for => [:create_e]
89
+ obj_needs :data, :meta_data, :for => [:create_e]
90
90
 
91
- def_attribute :status
92
- predefine_data_value :create, :desc => 'Server is creating.'
93
- predefine_data_value :boot, :desc => 'Server is booting.'
94
- predefine_data_value :active, :desc => 'Server is started.'
95
- def_attribute :private_ip_address
96
- def_attribute :public_ip_address
91
+ def_attribute :status
92
+ predefine_data_value :create, :desc => 'Server is creating.'
93
+ predefine_data_value :boot, :desc => 'Server is booting.'
94
+ predefine_data_value :active, :desc => 'Server is started.'
95
+ def_attribute :private_ip_address
96
+ def_attribute :public_ip_address
97
97
 
98
- def_attribute :image_id
99
- def_attribute :key_name
100
- end
98
+ def_attribute :image_id
99
+ def_attribute :key_name
101
100
  end
102
101
 
103
102
  # Internal Process function
@@ -16,20 +16,19 @@
16
16
 
17
17
  # It requires Core objects to be defined + default ForjProcess functions.
18
18
 
19
- # Define framework object on BaseDefinition
20
- module Lorj
21
- # ************************************ SERVER Console Object
22
- # Object representing the console log attached to a server
23
- class BaseDefinition
24
- define_obj(:server_log,
19
+ # rubocop: disable Style/ClassAndModuleChildren
25
20
 
26
- :get_e => :forj_get_server_log
27
- )
21
+ # SERVER Console Object
22
+ # Object representing the console log attached to a server
23
+ class Lorj::BaseDefinition
24
+ define_obj(:server_log,
28
25
 
29
- obj_needs :CloudObject, :server
30
- obj_needs :data, :log_lines
31
- undefine_attribute :name
32
- undefine_attribute :id
33
- def_attribute :output
34
- end
26
+ :get_e => :forj_get_server_log
27
+ )
28
+
29
+ obj_needs :CloudObject, :server
30
+ obj_needs :data, :log_lines
31
+ undefine_attribute :name
32
+ undefine_attribute :id
33
+ def_attribute :output
35
34
  end
@@ -16,13 +16,15 @@
16
16
 
17
17
  # It requires Core objects to be defined + default ForjProcess functions.
18
18
 
19
+ # rubocop: disable Style/ClassAndModuleChildren
20
+
19
21
  # Subnetwork Management
20
22
  class CloudProcess
21
23
  def forj_get_or_create_subnetwork(sCloudObj, hParams)
22
- subnet = query_subnet_one(sCloudObj, hParams)
23
- unless subnet.empty?
24
- register(subnet)
25
- return subnet
24
+ subnets = query_subnet(sCloudObj, hParams)
25
+ unless subnets.length == 0
26
+ register(subnets[0])
27
+ return subnets[0]
26
28
  end
27
29
 
28
30
  # Create the subnet
@@ -34,21 +36,18 @@ class CloudProcess
34
36
  end
35
37
  end
36
38
 
37
- # ************************************ SubNetwork Object model
38
39
  # Define framework object on BaseDefinition
39
- module Lorj
40
- # Identify subnetwork as part of network.
41
- class BaseDefinition
42
- define_obj(:subnetwork,
43
- :create_e => :forj_get_or_create_subnetwork
44
- )
40
+ # Identify subnetwork as part of network.
41
+ class Lorj::BaseDefinition
42
+ define_obj(:subnetwork,
43
+ :create_e => :forj_get_or_create_subnetwork
44
+ )
45
45
 
46
- obj_needs :CloudObject, :network_connection
47
- obj_needs :CloudObject, :network
48
- obj_needs :data, :subnetwork_name
46
+ obj_needs :CloudObject, :network_connection
47
+ obj_needs :CloudObject, :network
48
+ obj_needs :data, :subnetwork_name
49
49
 
50
- def_query_attribute :network_id
51
- end
50
+ def_attribute :network_id
52
51
  end
53
52
 
54
53
  # Subnetwork Management - internal functions
@@ -57,7 +56,7 @@ class CloudProcess
57
56
  name = hParams[:subnetwork_name]
58
57
  PrcLib.state("Creating subnet '%s'", name)
59
58
  begin
60
- subnet = controller_create(sCloudObj)
59
+ subnet = controller_create(sCloudObj, hParams)
61
60
  PrcLib.info("Subnet '%s' created.", subnet[:name])
62
61
  rescue => e
63
62
  PrcLib.fatal(1, "Unable to create '%s' subnet.", name, e)
@@ -78,34 +77,20 @@ class CloudProcess
78
77
  end
79
78
  end
80
79
 
81
- def query_subnet_one(_sCloudObj, hParams)
80
+ def query_subnet(sCloudObj, hParams)
82
81
  PrcLib.state('Searching for sub-network attached to '\
83
82
  "network '%s'", hParams[:network, :name])
84
83
  #######################
85
84
  begin
86
85
  query = { :network_id => hParams[:network, :id] }
87
- subnets = controller_query(:subnetwork, query)
88
- rescue => e
89
- PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
90
- end
91
- return nil if subnets.nil?
92
-
93
- case subnets.length
94
- when 0
95
- PrcLib.info('No subnet found from '\
96
- "'%s' network", hParams[:network, :name])
97
- ForjLib::Data.new
98
- when 1
99
- PrcLib.info("Found '%s' subnet from "\
100
- "'%s' network", subnets[0, :name],
101
- hParams[:network, :name])
102
- subnets[0]
103
- else
104
- PrcLib.warning('Several subnet was found on '\
105
- "'%s'. Choosing the first one "\
106
- "= '%s'", hParams[:network, :name],
107
- subnets[0, :name])
108
- subnets[0]
86
+ info = {
87
+ :notfound => "No %s found from '%s' network",
88
+ :checkmatch => "Found 1 %s. checking exact match for network '%s'.",
89
+ :nomatch => "No %s for network '%s' match"
90
+ }
91
+ query_single(sCloudObj, query, hParams[:network, :name], info)
92
+ rescue => e
93
+ PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
109
94
  end
110
95
  end
111
96
  end