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.
- 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
|