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
@@ -0,0 +1,63 @@
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
+ # Define framework object on BaseDefinition
21
+ module Lorj
22
+ # Common definition
23
+ class BaseDefinition
24
+ # All objects used by this process are built from a Controller
25
+ process_default :use_controller => true
26
+ end
27
+ end
28
+
29
+ # Class to manage retry on errors before failing
30
+ class SSLErrorMgt
31
+ def initialize(iMaxRetry = 5)
32
+ @retry = 0
33
+ @max_retry = iMaxRetry
34
+ end
35
+
36
+ def wait(message, issue = nil)
37
+ if @retry < @max_retry
38
+ sleep(2)
39
+ @retry += 1
40
+ if PrcLib.level == 0
41
+ msg = format('%s/%s try... ', @retry, @max_retry)
42
+ msg += issue unless issue.nil?
43
+ print msg
44
+ end
45
+ return false
46
+ else
47
+ PrcLib.error('Too many retry. %s', message)
48
+ return true
49
+ end
50
+ end
51
+
52
+ def error_detected(message, backtrace, e)
53
+ if message.match('SSLv2/v3 read server hello A: unknown protocol')
54
+ return wait(message, "'unknown protocol' SSL Error")
55
+ elsif e.is_a?(Excon::Errors::InternalServerError)
56
+ return wait(message, ANSI.red(e.class))
57
+ else
58
+ PrcLib.error("Exception %s: %s\n%s", e.class, message,
59
+ backtrace.join("\n"))
60
+ return true
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,93 @@
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
+ # Connection process code
21
+ class CloudProcess
22
+ def connect(sCloudObj, hParams)
23
+ ssl_error_obj = SSLErrorMgt.new # Retry object
24
+ PrcLib.debug("%s:%s Connecting to '%s' "\
25
+ "- Project '%s'",
26
+ self.class, sCloudObj, config[:provider], hParams[:tenant])
27
+ begin
28
+ controller_connect(sCloudObj)
29
+ rescue => e
30
+ retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
31
+
32
+ PrcLib.error('%s:%s: Unable to connect.\n%s',
33
+ self.class, sCloudObj, e.message)
34
+ nil
35
+ end
36
+ end
37
+ end
38
+
39
+ # Define framework object on BaseDefinition
40
+ module Lorj
41
+ # Define services model
42
+ class 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 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 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
93
+ end
@@ -0,0 +1,94 @@
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
+ # External network process attached to a network
20
+ class CloudProcess
21
+ def forj_get_or_create_ext_net(sCloudObj, hParams)
22
+ PrcLib.state("Checking router '%s' gateway", hParams[:router, :name])
23
+
24
+ router_obj = hParams[:router]
25
+ router_name = hParams[:router, :name]
26
+ network_id = hParams[:router, :gateway_network_id]
27
+ if network_id
28
+ external_network = forj_query_external_network(sCloudObj,
29
+ { :id => network_id },
30
+ hParams)
31
+ PrcLib.info("Router '%s' is attached to the "\
32
+ "external gateway '%s'.", router_name,
33
+ external_network[:name])
34
+ else
35
+ PrcLib.info("Router '%s' needs to be attached to an "\
36
+ 'external gateway.', router_name)
37
+ PrcLib.state('Attaching')
38
+ external_network = forj_query_external_network(:network, {}, hParams)
39
+ if !external_network.empty?
40
+ router_obj[:gateway_network_id] = external_network[:id]
41
+ forj_update_router(:router, hParams)
42
+ PrcLib.info("Router '%s' attached to the "\
43
+ "external network '%s'.",
44
+ router_name, external_network[:name])
45
+ else
46
+ PrcLib.fatal(1, "Unable to attach router '%s' to an external gateway. "\
47
+ 'Required for boxes to get internet access. ',
48
+ get_data(:router, :name))
49
+ end
50
+ end
51
+
52
+ # Need to keep the :network object as :external_network object type.
53
+ external_network.type = sCloudObj
54
+ external_network
55
+ end
56
+
57
+ def forj_query_external_network(_sCloudObj, sQuery, _hParams)
58
+ PrcLib.state('Identifying External gateway')
59
+ begin
60
+ # Searching for external network
61
+ networks = controller_query(:network, sQuery.merge(:external => true))
62
+
63
+ case networks.length
64
+ when 0
65
+ PrcLib.info('No external network')
66
+ nil
67
+ when 1
68
+ PrcLib.info("Found external network '%s'.", networks[0, :name])
69
+ networks[0]
70
+ else
71
+ PrcLib.warning('Found several external networks. '\
72
+ "Selecting the first one '%s'", networks[0, :name])
73
+ networks[0]
74
+ end
75
+ rescue => e
76
+ PrcLib.error("%s\n%s", e.message, e.backtrace.join("\n"))
77
+ end
78
+ end
79
+ end
80
+
81
+ # Define framework object on BaseDefinition
82
+ module Lorj
83
+ # Identify an external network thanks to the network router.
84
+ class BaseDefinition
85
+ define_obj(:external_network,
86
+
87
+ :create_e => :forj_get_or_create_ext_net,
88
+ :query_e => :forj_query_external_network
89
+ )
90
+
91
+ obj_needs :CloudObject, :network_connection
92
+ obj_needs :CloudObject, :router
93
+ end
94
+ end
@@ -0,0 +1,99 @@
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
+ # ---------------------------------------------------------------------------
20
+ # flavor management
21
+ # ---------------------------------------------------------------------------
22
+ class CloudProcess
23
+ # Depending on clouds/rights, we can create flavor or not.
24
+ # Usually, flavor records already exists, and the controller may map them
25
+ # CloudProcess predefines some values. Consult CloudProcess.rb for details
26
+ def forj_get_or_create_flavor(sCloudObj, hParams)
27
+ flavor_name = hParams[:flavor_name]
28
+ PrcLib.state("Searching for flavor '%s'", flavor_name)
29
+
30
+ flavors = query_flavor(sCloudObj, { :name => flavor_name }, hParams)
31
+ if flavors.length == 0
32
+ if !hParams[:create]
33
+ PrcLib.error("Unable to create %s '%s'. Creation is not "\
34
+ 'supported.', sCloudObj, flavor_name)
35
+ ForjLib::Data.new.set(nil, sCloudObj)
36
+ else
37
+ create_flavor(sCloudObj, hParams)
38
+ end
39
+ else
40
+ flavors[0]
41
+ end
42
+ end
43
+
44
+ # Should return 1 or 0 flavor.
45
+ def query_flavor(sCloudObj, sQuery, hParams)
46
+ flavor_name = hParams[:flavor_name]
47
+ list = forj_query_flavor(sCloudObj, sQuery, hParams)
48
+ query_single(sCloudObj, list, sQuery, flavor_name)
49
+ end
50
+
51
+ # Should return 1 or 0 flavor.
52
+ def forj_query_flavor(sCloudObj, sQuery, _hParams)
53
+ ssl_error_obj = SSLErrorMgt.new
54
+ begin
55
+ list = controller_query(sCloudObj, sQuery)
56
+ rescue => e
57
+ retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
58
+ end
59
+ list
60
+ end
61
+ end
62
+
63
+ # Define framework object on BaseDefinition
64
+ module Lorj
65
+ # ************************************ Flavor Object
66
+ # Identify flavor
67
+ class BaseDefinition # rubocop: disable ClassAndModuleChildren
68
+ define_obj(:flavor,
69
+
70
+ :create_e => :forj_get_or_create_flavor,
71
+ :query_e => :forj_query_flavor
72
+ # :get_e => :forj_get_flavor,
73
+ # :update_e => :forj_update_flavor,
74
+ # :delete_e => :forj_delete_flavor
75
+ )
76
+
77
+ obj_needs :CloudObject, :compute_connection
78
+ obj_needs :data, :flavor_name, :for => [:create_e]
79
+ # Cloud provider will need to map to one of those predefined flavors.
80
+ # limitation values may match exactly or at least ensure those limitation
81
+ # are under provider limitation
82
+ # ie, at least the CloudProcess limitation can less than the
83
+ # Cloud provider defines.
84
+ # CloudProcess EHD = 160, then Provider EHD = 200 is ok
85
+ # but Provider EHD = 150 is not ok.
86
+ predefine_data_value('tiny', :desc => 'VCU: 1, RAM:512M, HD:1G, '\
87
+ 'EHD: 0G, Swap: 0G')
88
+ predefine_data_value('xsmall', :desc => 'VCU: 1, RAM:1G, HD:10G, '\
89
+ 'EHD: 10G, Swap: 0G')
90
+ predefine_data_value('small', :desc => 'VCU: 2, RAM:2G, HD:30G, '\
91
+ 'EHD: 10G, Swap: 0G')
92
+ predefine_data_value('medium', :desc => 'VCU: 2, RAM:4G, HD:30G, '\
93
+ 'EHD: 50G, Swap: 0G')
94
+ predefine_data_value('large', :desc => 'VCU: 4, RAM:8G, HD:30G, '\
95
+ 'EHD: 100G, Swap: 0G')
96
+ predefine_data_value('xlarge', :desc => 'VCU: 8, RAM:16G, HD:30G, '\
97
+ 'EHD: 200G, Swap: 0G')
98
+ end
99
+ end
@@ -0,0 +1,87 @@
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
+ # ---------------------------------------------------------------------------
20
+ # Image management
21
+ # ---------------------------------------------------------------------------
22
+ class CloudProcess
23
+ def forj_get_or_create_image(sCloudObj, hParams)
24
+ image_name = hParams[:image_name]
25
+ PrcLib.state("Searching for image '%s'", image_name)
26
+
27
+ search_the_image(sCloudObj, { :name => image_name }, hParams)
28
+ # No creation possible.
29
+ end
30
+
31
+ def search_the_image(sCloudObj, sQuery, hParams)
32
+ image_name = hParams[:image_name]
33
+ images = forj_query_image(sCloudObj, sQuery, hParams)
34
+ case images.length
35
+ when 0
36
+ PrcLib.info("No image '%s' found", image_name)
37
+ nil
38
+ when 1
39
+ PrcLib.info("Found image '%s'.", image_name)
40
+ images[0, :ssh_user] = ssh_user(images[0, :name])
41
+ images[0]
42
+ else
43
+ PrcLib.info("Found several images '%s'. Selecting the first "\
44
+ "one '%s'", image_name, images[0, :name])
45
+ images[0, :ssh_user] = ssh_user(images[0, :name])
46
+ images[0]
47
+ end
48
+ end
49
+
50
+ def forj_query_image(sCloudObj, sQuery, _hParams)
51
+ ssl_error_obj = SSLErrorMgt.new
52
+ begin
53
+ images = controller_query(sCloudObj, sQuery)
54
+ rescue => e
55
+ retry unless ssl_error_obj.error_detected(e.message, e.backtrace, e)
56
+ end
57
+ images.each do |image|
58
+ image[:ssh_user] = ssh_user(image[:name])
59
+ end
60
+ images
61
+ end
62
+
63
+ def ssh_user(image_name)
64
+ return 'fedora' if image_name =~ /fedora/i
65
+ return 'centos' if image_name =~ /centos/i
66
+ 'ubuntu'
67
+ end
68
+ end
69
+
70
+ # Define framework object on BaseDefinition
71
+ module Lorj
72
+ # ************************************ Image Object
73
+ # Identify image
74
+ class BaseDefinition
75
+ define_obj(:image,
76
+
77
+ :create_e => :forj_get_or_create_image,
78
+ :query_e => :forj_query_image
79
+ # :get_e => :forj_get_image
80
+ # :update_e => :forj_update_image
81
+ # :delete_e => :forj_delete_image
82
+ )
83
+
84
+ obj_needs :CloudObject, :compute_connection
85
+ obj_needs :data, :image_name, :for => [:create_e]
86
+ end
87
+ end
@@ -0,0 +1,34 @@
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
+ # Define framework object on BaseDefinition
20
+ module Lorj
21
+ # ************************************ Internet network Object
22
+ # Define Internet network
23
+ #
24
+ # This object contains the logic to ensure the router's network has a gateway
25
+ # to the external network (internet)
26
+ # is capable to connect to internet
27
+ # And to create this connection if possible.
28
+ class BaseDefinition # rubocop: disable ClassAndModuleChildren
29
+ define_obj(:internet_network, :nohandler => true)
30
+
31
+ obj_needs :CloudObject, :external_network # External network to connect if
32
+ # needed.
33
+ end
34
+ end
@@ -0,0 +1,30 @@
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
+ # Define framework object on BaseDefinition
20
+ module Lorj
21
+ # ************************************ Internet SERVER Object
22
+ # internet server is a server connected to the internet network.
23
+ class BaseDefinition
24
+ define_obj(:internet_server, :nohandler => true)
25
+
26
+ obj_needs :CloudObject, :internet_network
27
+ obj_needs :CloudObject, :server
28
+ obj_needs :CloudObject, :public_ip
29
+ end
30
+ end