ruby_aem_aws_odysseas 1.4.2

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 (36) hide show
  1. checksums.yaml +7 -0
  2. data/conf/gem.yaml +1 -0
  3. data/lib/ruby_aem_aws/abstract/cloudwatch.rb +83 -0
  4. data/lib/ruby_aem_aws/abstract/component.rb +54 -0
  5. data/lib/ruby_aem_aws/abstract/grouped_component.rb +39 -0
  6. data/lib/ruby_aem_aws/abstract/single_component.rb +36 -0
  7. data/lib/ruby_aem_aws/abstract/snapshot.rb +35 -0
  8. data/lib/ruby_aem_aws/abstract/stackmanager.rb +68 -0
  9. data/lib/ruby_aem_aws/architecture/consolidated_stack.rb +49 -0
  10. data/lib/ruby_aem_aws/architecture/full_set_stack.rb +141 -0
  11. data/lib/ruby_aem_aws/architecture/stack_manager.rb +44 -0
  12. data/lib/ruby_aem_aws/client/cloudwatch.rb +87 -0
  13. data/lib/ruby_aem_aws/client/dynamo_db.rb +36 -0
  14. data/lib/ruby_aem_aws/client/s3.rb +42 -0
  15. data/lib/ruby_aem_aws/client/sns_topic.rb +30 -0
  16. data/lib/ruby_aem_aws/component/author.rb +71 -0
  17. data/lib/ruby_aem_aws/component/author_dispatcher.rb +84 -0
  18. data/lib/ruby_aem_aws/component/author_primary.rb +62 -0
  19. data/lib/ruby_aem_aws/component/author_publish_dispatcher.rb +56 -0
  20. data/lib/ruby_aem_aws/component/author_standby.rb +62 -0
  21. data/lib/ruby_aem_aws/component/chaos_monkey.rb +78 -0
  22. data/lib/ruby_aem_aws/component/component_descriptor.rb +28 -0
  23. data/lib/ruby_aem_aws/component/orchestrator.rb +78 -0
  24. data/lib/ruby_aem_aws/component/publish.rb +78 -0
  25. data/lib/ruby_aem_aws/component/publish_dispatcher.rb +83 -0
  26. data/lib/ruby_aem_aws/component/stack_manager_resources.rb +90 -0
  27. data/lib/ruby_aem_aws/constants.rb +53 -0
  28. data/lib/ruby_aem_aws/error.rb +68 -0
  29. data/lib/ruby_aem_aws/mixins/healthy_count_verifier.rb +154 -0
  30. data/lib/ruby_aem_aws/mixins/healthy_resource_verifier.rb +188 -0
  31. data/lib/ruby_aem_aws/mixins/healthy_state_verifier.rb +45 -0
  32. data/lib/ruby_aem_aws/mixins/instance_describer.rb +34 -0
  33. data/lib/ruby_aem_aws/mixins/metric_verifier.rb +189 -0
  34. data/lib/ruby_aem_aws/mixins/snapshot_verifier.rb +37 -0
  35. data/lib/ruby_aem_aws_odysseas.rb +152 -0
  36. metadata +148 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 811c1de4310ee1713969ee696793020c0e0335777955e3d33bae9b7fd54f25f6
4
+ data.tar.gz: 1e9af69fa99888518e99d20070bf329afce67ce66b0297d2940cab40963b1fc8
5
+ SHA512:
6
+ metadata.gz: 8fb3af26a7120360e15f52333bfa262125dda53a7bcd2138e749db8ba0d08110a21b9809b16ccf686e9c03dfa9ee2ff76f7e22dbf23bce53fa8cb3cf77e8826c
7
+ data.tar.gz: 770ea313144cb4a493c2212d1bf0bfd25c378db81b3635beec6e1cfe8591183217cdb15e49eda375b529ad73db1396aee7c4036da32c3dd82166994c5ccfb87c
data/conf/gem.yaml ADDED
@@ -0,0 +1 @@
1
+ version: 1.4.2
@@ -0,0 +1,83 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require_relative '../error'
16
+
17
+ module RubyAemAws
18
+ # Add common methods to all Components.
19
+ module AbstractCloudwatch
20
+ private
21
+
22
+ # @param alarm_name Cloudwatch alarm name
23
+ # @return Array of a Cloudwatch alarm filter to filter for a specific Cloudwatch alarm
24
+ def filter_for_cloudwatch_alarm(alarm_name)
25
+ {
26
+ alarm_names: [alarm_name]
27
+ }
28
+ end
29
+
30
+ # @param loggroup_name Cloudwatch loggroup name
31
+ # @param log_stream_name Cloudwatch logstream name
32
+ # @param log_message log message to filter for
33
+ # @return Array of a Cloudwatch log event filter to filter for a specific Cloudwatch log event
34
+ def filter_for_cloudwatch_log_event(loggroup_name, log_stream_name, log_message)
35
+ {
36
+ log_group_name: loggroup_name,
37
+ log_stream_names: [log_stream_name],
38
+ filter_pattern: log_message
39
+ }
40
+ end
41
+
42
+ # @param loggroup_name Cloudwatch loggroup name
43
+ # @param log_stream_name Cloudwatch logstream name
44
+ # @return Array of a Cloudwatch log stream filter to filter for a specific Cloudwatch log stream
45
+ def filter_for_cloudwatch_log_stream(log_group_name, log_stream_name)
46
+ {
47
+ log_group_name: log_group_name,
48
+ log_stream_name_prefix: log_stream_name,
49
+ order_by: 'LogStreamName'
50
+ }
51
+ end
52
+
53
+ # @param namespace Cloudwatch metric namespace
54
+ # @param metric_name Cloudwatch metric name
55
+ # @return Array of a Cloudwatch metric filter to filter for a specific Cloudwatch metric
56
+ def filter_for_cloudwatch_metric(namespace, metric_name)
57
+ {
58
+ namespace: namespace,
59
+ metric_name: metric_name
60
+ }
61
+ end
62
+
63
+ # @param dimension_values Cloudwatch Dimension value
64
+ # @return Array of a Cloudwatch dimension filter for the Cloudwatch metric filter
65
+ def dimensions_filter_for_cloudwatch_metric(dimension_values)
66
+ {
67
+ dimensions: [
68
+ dimension_values
69
+ ]
70
+ }
71
+ end
72
+
73
+ # @param dimensions_name Cloudwatch Dimension name
74
+ # @param dimension_values Cloudwatch Dimension value
75
+ # @return Array of a Cloudwatch Dimension value filter for the Cloudwatch dimension filter
76
+ def dimensions_value_filter_for_cloudwatch_metric(dimensions_name, dimensions_value)
77
+ {
78
+ name: dimensions_name,
79
+ value: dimensions_value
80
+ }
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,54 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require_relative '../component/component_descriptor'
16
+ require_relative '../mixins/instance_describer'
17
+ require_relative '../error'
18
+
19
+ module RubyAemAws
20
+ # Add common methods to all Components.
21
+ module AbstractComponent
22
+ include Component
23
+ include InstanceDescriber
24
+
25
+ def to_s
26
+ "#{self.class.name.split('::').last}(#{@descriptor&.stack_prefix})"
27
+ end
28
+
29
+ private
30
+
31
+ def filter_for_descriptor
32
+ {
33
+ filters: [
34
+ { name: 'tag:StackPrefix', values: [@descriptor.stack_prefix] },
35
+ { name: 'tag:Component', values: [@descriptor.ec2.component] },
36
+ { name: 'tag:Name', values: [@descriptor.ec2.name] },
37
+ { name: 'instance-state-name', values: ['running'] }
38
+ ]
39
+ }
40
+ end
41
+
42
+ # @param snapshot_type SnapshotType tag
43
+ # @return Array of a EC2 filter to filter for a specific Snapshottype
44
+ def filter_for_snapshot(snapshot_type)
45
+ {
46
+ filters: [
47
+ { name: 'tag:StackPrefix', values: [@descriptor.stack_prefix] },
48
+ { name: 'tag:SnapshotType', values: [snapshot_type] },
49
+ { name: 'tag:Component', values: [@descriptor.ec2.component] }
50
+ ]
51
+ }
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,39 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'aws-sdk'
16
+ require_relative 'component'
17
+
18
+ module RubyAemAws
19
+ # Add common methods to all Components.
20
+ module AbstractGroupedComponent
21
+ include AbstractComponent
22
+
23
+ def get_all_instances
24
+ ec2_resource.instances(filter_for_descriptor)
25
+ end
26
+
27
+ def get_instance_by_id(instance_id)
28
+ ec2_resource.instance(instance_id)
29
+ end
30
+
31
+ def get_num_of_instances
32
+ get_all_instances.entries.length
33
+ end
34
+
35
+ def get_random_instance
36
+ get_all_instances.entries.sample
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'aws-sdk'
16
+ require_relative 'component'
17
+
18
+ module RubyAemAws
19
+ # Add common methods to all Components.
20
+ module AbstractSingleComponent
21
+ include AbstractComponent
22
+
23
+ def get_instance
24
+ instances = ec2_resource.instances(filter_for_descriptor).select { |instance| InstanceState::ALL_ACTIVE.include?(instance.state.name) }
25
+ count = instances.count
26
+ raise RubyAemAws::ExpectedSingleInstanceError if count > 1
27
+ return nil if count.zero?
28
+
29
+ instances.first
30
+ end
31
+
32
+ def get_all_instances
33
+ [get_instance]
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,35 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'aws-sdk'
16
+ require_relative 'component'
17
+
18
+ module RubyAemAws
19
+ # Add method to scan for snapshots
20
+ module AbstractSnapshot
21
+ include AbstractComponent
22
+
23
+ # @param snapshot_id Type of snapsthot to look for
24
+ # @return Class Aws::EC2::Snapshot
25
+ def get_snapshot_by_id(snapshot_id)
26
+ ec2_resource.snapshot(snapshot_id).data
27
+ end
28
+
29
+ # @param snapshot_type Type of snapsthot to look for
30
+ # @return EC2 Resource snapshots collection
31
+ def get_snapshots_by_type(snapshot_type)
32
+ ec2_resource.snapshots(filter_for_snapshot(snapshot_type))
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,68 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ module RubyAemAws
16
+ # Add common methods to StackManager resource
17
+ module AbstractStackManager
18
+ private
19
+
20
+ # @param dynamodb_tablename AWS DynamoDB table name
21
+ # @param attribute_value value to scan for
22
+ # @return Array of a DynamoDB filter to scan for a specific value
23
+ def filter_for_db_scan(dynamodb_tablename, attribute_value)
24
+ {
25
+ table_name: dynamodb_tablename,
26
+ attributes_to_get: ['command_id'],
27
+ scan_filter: {
28
+ 'message_id' => {
29
+ attribute_value_list: [attribute_value],
30
+ comparison_operator: 'EQ'
31
+ }
32
+ },
33
+ consistent_read: true
34
+ }
35
+ end
36
+
37
+ # @param dynamodb_tablename AWS DynamoDB table name
38
+ # @param attkey_attribute_valueribute_value Key value to query for
39
+ # @return Array of a DynamoDB filter to query for a specific value
40
+ def filter_for_db_query(dynamodb_tablename, key_attribute_value)
41
+ {
42
+ table_name: dynamodb_tablename,
43
+ consistent_read: true,
44
+ attributes_to_get: ['state'],
45
+ key_conditions: {
46
+ 'command_id' => {
47
+ attribute_value_list: [key_attribute_value],
48
+ comparison_operator: 'EQ'
49
+ }
50
+ },
51
+ query_filter: {
52
+ 'state' => {
53
+ attribute_value_list: ['Pending'],
54
+ comparison_operator: 'NE'
55
+ }
56
+ }
57
+ }
58
+ end
59
+
60
+ # @param task Stack Manager task to trigger
61
+ # @param stack_prefix Target Stack Prefix name
62
+ # @param details SNS Message payload
63
+ # @return Array of a AWS SNS publish filter to query for a specific value
64
+ def message_for_sns_publish(task, stack_prefix, details)
65
+ "{ \"default\": \"{ 'task': '#{task}', 'stack_prefix': '#{stack_prefix}', 'details': #{details} }\"}"
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,49 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require_relative '../component/author_publish_dispatcher'
16
+
17
+ module RubyAemAws
18
+ # Factory for the consolidated AEM stack component interface.
19
+ class ConsolidatedStack
20
+ attr_reader :cloudformation_client
21
+
22
+ # @param stack_prefix AWS tag: StackPrefix
23
+ # @param params Array of AWS Clients and Resource connections:
24
+ # - CloudFormationClient: AWS Cloudformation Client.
25
+ # - CloudWatchClient: AWS Cloudwatch Client.
26
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
27
+ # - Ec2Resource: AWS EC2 Resource connection.
28
+ # @return new RubyAemAws::ConsolidatedStack instance
29
+ def initialize(stack_prefix, params)
30
+ @consolidated_aws_clients = {
31
+ CloudWatchClient: params[:CloudWatchClient],
32
+ CloudWatchLogsClient: params[:CloudWatchLogsClient],
33
+ Ec2Resource: params[:Ec2Resource]
34
+ }
35
+ @cloudformation_client = cloudformation_client
36
+ @stack_prefix = stack_prefix
37
+ end
38
+
39
+ # @param stack_prefix AWS tag: StackPrefix
40
+ # @param consolidated_aws_clients Array of AWS Clients and Resource connections:
41
+ # - CloudWatchClient: AWS Cloudwatch Client.
42
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
43
+ # - Ec2Resource: AWS EC2 Resource connection.
44
+ # @return new RubyAemAws::Component::AuthorPublishDispatcher instance
45
+ def author_publish_dispatcher
46
+ RubyAemAws::Component::AuthorPublishDispatcher.new(@stack_prefix, @consolidated_aws_clients)
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,141 @@
1
+ # Copyright 2018 Shine Solutions
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require_relative '../component/author_dispatcher'
16
+ require_relative '../component/author'
17
+ require_relative '../component/chaos_monkey'
18
+ require_relative '../component/orchestrator'
19
+ require_relative '../component/publish_dispatcher'
20
+ require_relative '../component/publish'
21
+ require_relative '../mixins/metric_verifier'
22
+
23
+ module RubyAemAws
24
+ # Factory for the full-set AEM stack component interfaces.
25
+ class FullSetStack
26
+ attr_reader :cloudformation_client, :cloud_watch_client
27
+ include MetricVerifier
28
+
29
+ # @param stack_prefix AWS tag: StackPrefix
30
+ # @param params Array of AWS Clients and Resource connections:
31
+ # - AutoScalingClient: AWS AutoScalingGroup Client.
32
+ # - CloudFormationClient: AWS Cloudformation Client.
33
+ # - CloudWatchClient: AWS Cloudwatch Client.
34
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
35
+ # - Ec2Resource: AWS EC2 Resource connection.
36
+ # - ElbClient: AWS ElasticLoadBalancer Client.
37
+ # @return new RubyAemAws::FullSetStack instance
38
+ def initialize(stack_prefix, params)
39
+ @author_aws_clients = {
40
+ CloudWatchClient: params[:CloudWatchClient],
41
+ CloudWatchLogsClient: params[:CloudWatchLogsClient],
42
+ Ec2Resource: params[:Ec2Resource],
43
+ ElbClient: params[:ElbClient]
44
+ }
45
+
46
+ @dispatcher_aws_clients = {
47
+ AutoScalingClient: params[:AutoScalingClient],
48
+ CloudWatchClient: params[:CloudWatchClient],
49
+ CloudWatchLogsClient: params[:CloudWatchLogsClient],
50
+ Ec2Resource: params[:Ec2Resource],
51
+ ElbClient: params[:ElbClient]
52
+ }
53
+
54
+ @publish_aws_clients = {
55
+ AutoScalingClient: params[:AutoScalingClient],
56
+ CloudWatchClient: params[:CloudWatchClient],
57
+ CloudWatchLogsClient: params[:CloudWatchLogsClient],
58
+ Ec2Resource: params[:Ec2Resource]
59
+ }
60
+
61
+ @aem_java_aws_clients = {
62
+ AutoScalingClient: params[:AutoScalingClient],
63
+ CloudWatchClient: params[:CloudWatchClient],
64
+ CloudWatchLogsClient: params[:CloudWatchLogsClient],
65
+ Ec2Resource: params[:Ec2Resource]
66
+ }
67
+
68
+ @cloudformation_client = params[:CloudFormationClient]
69
+ @cloud_watch_client = params[:CloudWatchClient]
70
+ @stack_prefix = stack_prefix
71
+ end
72
+
73
+ # @param stack_prefix AWS tag: StackPrefix
74
+ # @param dispatcher_aws_clients Array of AWS Clients and Resource connections:
75
+ # - AutoScalingClient: AWS AutoScalingGroup Client.
76
+ # - CloudWatchClient: AWS Cloudwatch Client.
77
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
78
+ # - Ec2Resource: AWS EC2 Resource connection.
79
+ # - ElbClient: AWS ElasticLoadBalancer Client.
80
+ # @return new RubyAemAws::Component::AuthorDispatcher instance
81
+ def author_dispatcher
82
+ RubyAemAws::Component::AuthorDispatcher.new(@stack_prefix, @dispatcher_aws_clients)
83
+ end
84
+
85
+ # @param stack_prefix AWS tag: StackPrefix
86
+ # @param author_aws_clients Array of AWS Clients and Resource connections:
87
+ # - CloudWatchClient: AWS Cloudwatch Client.
88
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
89
+ # - Ec2Resource: AWS EC2 Resource connection.
90
+ # - ElbClient: AWS ElasticLoadBalancer Client.
91
+ # @return new RubyAemAws::Component::Author instance
92
+ def author
93
+ RubyAemAws::Component::Author.new(@stack_prefix, @author_aws_clients)
94
+ end
95
+
96
+ # @param stack_prefix AWS tag: StackPrefix
97
+ # @param chaos_monkey_aws_clients Array of AWS Clients and Resource connections:
98
+ # - AutoScalingClient: AWS AutoScalingGroup Client.
99
+ # - CloudWatchClient: AWS Cloudwatch Client.
100
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
101
+ # - Ec2Resource: AWS EC2 Resource connection.
102
+ # @return new RubyAemAws::Component::ChaosMonkey instance
103
+ def chaos_monkey
104
+ RubyAemAws::Component::ChaosMonkey.new(@stack_prefix, @aem_java_aws_clients)
105
+ end
106
+
107
+ # @param stack_prefix AWS tag: StackPrefix
108
+ # @param orchestrator_aws_clients Array of AWS Clients and Resource connections:
109
+ # - AutoScalingClient: AWS AutoScalingGroup Client.
110
+ # - CloudWatchClient: AWS Cloudwatch Client.
111
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
112
+ # - Ec2Resource: AWS EC2 Resource connection.
113
+ # @return new RubyAemAws::Component::Orchestrator instance
114
+ def orchestrator
115
+ RubyAemAws::Component::Orchestrator.new(@stack_prefix, @aem_java_aws_clients)
116
+ end
117
+
118
+ # @param stack_prefix AWS tag: StackPrefix
119
+ # @param publish_aws_clients Array of AWS Clients and Resource connections:
120
+ # - AutoScalingClient: AWS AutoScalingGroup Client.
121
+ # - CloudWatchClient: AWS Cloudwatch Client.
122
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
123
+ # - Ec2Resource: AWS EC2 Resource connection.
124
+ # @return new RubyAemAws::Component::Publish instance
125
+ def publish
126
+ RubyAemAws::Component::Publish.new(@stack_prefix, @publish_aws_clients)
127
+ end
128
+
129
+ # @param stack_prefix AWS tag: StackPrefix
130
+ # @param dispatcher_aws_clients Array of AWS Clients and Resource connections:
131
+ # - AutoScalingClient: AWS AutoScalingGroup Client.
132
+ # - CloudWatchClient: AWS Cloudwatch Client.
133
+ # - CloudWatchLogsClient: AWS Cloudwatch Logs Client.
134
+ # - Ec2Resource: AWS EC2 Resource connection.
135
+ # - ElbClient: AWS ElasticLoadBalancer Client.
136
+ # @return new RubyAemAws::Component::PublishDispatcher instance
137
+ def publish_dispatcher
138
+ RubyAemAws::Component::PublishDispatcher.new(@stack_prefix, @dispatcher_aws_clients)
139
+ end
140
+ end
141
+ end