ruby_aem_aws_odysseas 1.4.2

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