ruby_aem_aws_odysseas 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/conf/gem.yaml +1 -0
- data/lib/ruby_aem_aws/abstract/cloudwatch.rb +83 -0
- data/lib/ruby_aem_aws/abstract/component.rb +54 -0
- data/lib/ruby_aem_aws/abstract/grouped_component.rb +39 -0
- data/lib/ruby_aem_aws/abstract/single_component.rb +36 -0
- data/lib/ruby_aem_aws/abstract/snapshot.rb +35 -0
- data/lib/ruby_aem_aws/abstract/stackmanager.rb +68 -0
- data/lib/ruby_aem_aws/architecture/consolidated_stack.rb +49 -0
- data/lib/ruby_aem_aws/architecture/full_set_stack.rb +141 -0
- data/lib/ruby_aem_aws/architecture/stack_manager.rb +44 -0
- data/lib/ruby_aem_aws/client/cloudwatch.rb +87 -0
- data/lib/ruby_aem_aws/client/dynamo_db.rb +36 -0
- data/lib/ruby_aem_aws/client/s3.rb +42 -0
- data/lib/ruby_aem_aws/client/sns_topic.rb +30 -0
- data/lib/ruby_aem_aws/component/author.rb +71 -0
- data/lib/ruby_aem_aws/component/author_dispatcher.rb +84 -0
- data/lib/ruby_aem_aws/component/author_primary.rb +62 -0
- data/lib/ruby_aem_aws/component/author_publish_dispatcher.rb +56 -0
- data/lib/ruby_aem_aws/component/author_standby.rb +62 -0
- data/lib/ruby_aem_aws/component/chaos_monkey.rb +78 -0
- data/lib/ruby_aem_aws/component/component_descriptor.rb +28 -0
- data/lib/ruby_aem_aws/component/orchestrator.rb +78 -0
- data/lib/ruby_aem_aws/component/publish.rb +78 -0
- data/lib/ruby_aem_aws/component/publish_dispatcher.rb +83 -0
- data/lib/ruby_aem_aws/component/stack_manager_resources.rb +90 -0
- data/lib/ruby_aem_aws/constants.rb +53 -0
- data/lib/ruby_aem_aws/error.rb +68 -0
- data/lib/ruby_aem_aws/mixins/healthy_count_verifier.rb +154 -0
- data/lib/ruby_aem_aws/mixins/healthy_resource_verifier.rb +188 -0
- data/lib/ruby_aem_aws/mixins/healthy_state_verifier.rb +45 -0
- data/lib/ruby_aem_aws/mixins/instance_describer.rb +34 -0
- data/lib/ruby_aem_aws/mixins/metric_verifier.rb +189 -0
- data/lib/ruby_aem_aws/mixins/snapshot_verifier.rb +37 -0
- data/lib/ruby_aem_aws_odysseas.rb +152 -0
- 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
|