esp_sdk 2.5.0 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +5 -3
- data/Guardfile +3 -1
- data/esp_sdk.gemspec +2 -1
- data/lib/esp/aws_clients.rb +2 -1
- data/lib/esp/commands/commands_tasks.rb +2 -1
- data/lib/esp/commands/console.rb +4 -0
- data/lib/esp/exceptions.rb +1 -0
- data/lib/esp/extensions/active_resource/dirty.rb +51 -0
- data/lib/esp/extensions/active_resource/formats/json_api_format.rb +5 -3
- data/lib/esp/extensions/active_resource/paginated_collection.rb +71 -38
- data/lib/esp/extensions/active_resource/validations.rb +4 -2
- data/lib/esp/external_account_creator.rb +4 -1
- data/lib/esp/resources/alert.rb +53 -42
- data/lib/esp/resources/cloud_trail_event.rb +18 -12
- data/lib/esp/resources/concerns/stat_totals.rb +70 -67
- data/lib/esp/resources/contact_request.rb +17 -14
- data/lib/esp/resources/custom_signature/definition.rb +46 -51
- data/lib/esp/resources/custom_signature/result/alert.rb +13 -5
- data/lib/esp/resources/custom_signature/result.rb +49 -53
- data/lib/esp/resources/custom_signature.rb +52 -61
- data/lib/esp/resources/dashboard.rb +11 -5
- data/lib/esp/resources/external_account.rb +59 -58
- data/lib/esp/resources/metadata.rb +21 -11
- data/lib/esp/resources/organization.rb +49 -39
- data/lib/esp/resources/region.rb +25 -28
- data/lib/esp/resources/report.rb +46 -44
- data/lib/esp/resources/reports/export/integration.rb +22 -13
- data/lib/esp/resources/resource.rb +4 -3
- data/lib/esp/resources/scan_interval.rb +19 -13
- data/lib/esp/resources/service.rb +17 -11
- data/lib/esp/resources/signature.rb +43 -53
- data/lib/esp/resources/stat.rb +72 -55
- data/lib/esp/resources/stat_custom_signature.rb +73 -65
- data/lib/esp/resources/stat_region.rb +76 -65
- data/lib/esp/resources/stat_service.rb +76 -65
- data/lib/esp/resources/stat_signature.rb +76 -65
- data/lib/esp/resources/sub_organization.rb +51 -60
- data/lib/esp/resources/suppression/region.rb +35 -30
- data/lib/esp/resources/suppression/signature.rb +35 -29
- data/lib/esp/resources/suppression/unique_identifier.rb +27 -22
- data/lib/esp/resources/suppression.rb +45 -34
- data/lib/esp/resources/tag.rb +20 -11
- data/lib/esp/resources/team.rb +56 -58
- data/lib/esp/resources/user.rb +35 -32
- data/lib/esp/version.rb +1 -1
- data/lib/esp.rb +39 -16
- data/lib/esp_sdk.rb +1 -0
- data/test/esp/extensions/active_resource/dirty_test.rb +81 -0
- data/test/esp/extensions/active_resource/formats/json_api_format_test.rb +8 -0
- data/test/esp/extensions/active_resource/paginated_collection_test.rb +7 -0
- data/test/esp/integration/json_api_format_integration_test.rb +5 -2
- data/test/esp/integration/organization_integration_test.rb +1 -1
- data/test/esp/resources/custom_signature_test.rb +15 -0
- data/test/factories/custom_signatures.rb +0 -10
- metadata +21 -3
@@ -9,89 +9,85 @@ module ESP
|
|
9
9
|
belongs_to :region, class_name: 'ESP::Region'
|
10
10
|
belongs_to :external_account, class_name: 'ESP::ExternalAccount'
|
11
11
|
|
12
|
+
# @return [ActiveResource::PaginatedCollection<ESP::CustomSignature::Result::Alert>]
|
12
13
|
def alerts
|
13
14
|
return attributes['alerts'] if attributes['alerts'].present?
|
14
15
|
CustomSignature::Result::Alert.for_result(id)
|
15
16
|
end
|
16
17
|
|
17
18
|
# Not Implemented. You cannot update a CustomSignature::Result.
|
19
|
+
#
|
20
|
+
# @return [void]
|
18
21
|
def update
|
19
22
|
fail ESP::NotImplementedError
|
20
23
|
end
|
21
24
|
|
22
25
|
# Not Implemented. You cannot destroy a CustomSignature::Result.
|
26
|
+
#
|
27
|
+
# @return [void]
|
23
28
|
def destroy
|
24
29
|
fail ESP::NotImplementedError
|
25
30
|
end
|
26
31
|
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
# ==== Parameters
|
31
|
-
#
|
32
|
-
# +clauses+ | Hash of attributes with appended predicates to search, sort and include.
|
32
|
+
# @!method self.where(clauses = {})
|
33
|
+
# Returns a paginated list filtered by search parameters
|
33
34
|
#
|
34
|
-
#
|
35
|
+
# *call-seq* -> +super.where(clauses = {})+
|
35
36
|
#
|
36
|
-
#
|
37
|
+
# @param clauses [Hash] A hash of attributes with appended predicates to search, sort and include.
|
38
|
+
# ===== Valid Clauses
|
37
39
|
#
|
38
|
-
#
|
39
|
-
#
|
40
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-result-attributes] for valid arguments
|
41
|
+
# @return [ActiveResource::PaginatedCollection<ESP::CustomSignature::Result>]
|
40
42
|
|
41
|
-
|
42
|
-
#
|
43
|
-
# Find a CustomSignature::Result by id
|
43
|
+
# @!method self.find(id)
|
44
|
+
# Find a CustomSignature::Result by id
|
44
45
|
#
|
45
|
-
#
|
46
|
+
# *call-seq* -> +super.find(id, options = {})+
|
46
47
|
#
|
47
|
-
#
|
48
|
+
# @overload find(id)
|
49
|
+
# @overload find(id, options = {})
|
50
|
+
# @param options [Hash] An optional hash of options.
|
51
|
+
# ===== Valid Options
|
48
52
|
#
|
49
|
-
#
|
53
|
+
# +include+ | The list of associated objects to return on the initial request.
|
50
54
|
#
|
51
|
-
#
|
55
|
+
# ===== Valid Includable Associations
|
52
56
|
#
|
53
|
-
#
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-result-attributes] for valid arguments
|
58
|
-
#
|
59
|
-
# :call-seq:
|
60
|
-
# find(id, options = {})
|
61
|
-
|
62
|
-
# :singleton-method: all
|
63
|
-
# Return a paginated CustomSignature::Result list
|
57
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-result-attributes] for valid arguments
|
58
|
+
# @param id [Integer, Numeric, #to_i] Required ID of the custom signature result to retrieve.
|
59
|
+
# @return [ActiveResource::PaginatedCollection<ESP::CustomSignature::Result>]
|
64
60
|
|
65
|
-
#
|
66
|
-
#
|
67
|
-
# :call-seq:
|
68
|
-
# create(attributes={})
|
61
|
+
# @!method self.all
|
62
|
+
# Returns a paginated list.
|
69
63
|
#
|
70
|
-
#
|
71
|
-
#
|
72
|
-
# +attributes+ | Required | A hash of custom signature result attributes
|
73
|
-
#
|
74
|
-
# ===== Valid Attributes
|
75
|
-
#
|
76
|
-
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-result-create] for valid arguments
|
77
|
-
#
|
78
|
-
# ==== Example
|
79
|
-
#
|
80
|
-
# signature = "# Demo Ruby Signature\r\nconfigure do |c|\r\n # Set regions to run in. Remove this line to run in all regions.\r\n c.valid_regions = [:us_east_1]\r\n # Override region to display as global. Useful when checking resources\r\n # like IAM that do not have a specific region.\r\n c.display_as = :global\r\n # deep_inspection works with set_data to automically collect\r\n # data fields for each alert. Not required.\r\n c.deep_inspection = [:users]\r\nend\r\n\r\n# Required perform method\r\ndef perform(aws)\r\n list_users = aws.iam.list_users\r\n count = list_users[:users].count\r\n\r\n # Set data for deep_inspection to use\r\n set_data(list_users)\r\n\r\n if count == 0\r\n fail(user_count: count, condition: 'count == 0')\r\n else\r\n pass(user_count: count, condition: 'count >= 1')\r\n end\r\nend\r\n"
|
81
|
-
# result = ESP::CustomSignature::Result.create(signature: signature, language: "ruby", region_id: 1, external_account_id: 1)
|
64
|
+
# @return [ActiveResource::PaginatedCollection<ESP::CustomSignature::Result>]
|
82
65
|
|
83
|
-
#
|
84
|
-
#
|
85
|
-
#
|
86
|
-
#
|
66
|
+
# @!method self.create(attributes = {})
|
67
|
+
# Create a CustomSignature::Result
|
68
|
+
# *call-seq* -> +super.create(attributes={})+
|
69
|
+
#
|
70
|
+
# @param attributes [Hash] Required hash of custom signature result attributes.
|
71
|
+
# ===== Valid Attributes
|
72
|
+
#
|
73
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-result-create] for valid arguments
|
74
|
+
# @return [ESP::CustomSignature::Result]
|
75
|
+
# @example
|
76
|
+
# signature = "# Demo Ruby Signature\r\nconfigure do |c|\r\n # Set regions to run in. Remove this line to run in all regions.\r\n c.valid_regions = [:us_east_1]\r\n # Override region to display as global. Useful when checking resources\r\n # like IAM that do not have a specific region.\r\n c.display_as = :global\r\n # deep_inspection works with set_data to automically collect\r\n # data fields for each alert. Not required.\r\n c.deep_inspection = [:users]\r\nend\r\n\r\n# Required perform method\r\ndef perform(aws)\r\n list_users = aws.iam.list_users\r\n count = list_users[:users].count\r\n\r\n # Set data for deep_inspection to use\r\n set_data(list_users)\r\n\r\n if count == 0\r\n fail(user_count: count, condition: 'count == 0')\r\n else\r\n pass(user_count: count, condition: 'count >= 1')\r\n end\r\nend\r\n"
|
77
|
+
# result = ESP::CustomSignature::Result.create(signature: signature, language: "ruby", region_id: 1, external_account_id: 1)
|
78
|
+
|
79
|
+
# @!method save
|
80
|
+
# Create or update a CustomSignature::Result
|
87
81
|
#
|
88
|
-
#
|
82
|
+
# ===== Valid Attributes
|
89
83
|
#
|
90
|
-
#
|
84
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-result-create] for valid arguments
|
91
85
|
#
|
92
|
-
#
|
93
|
-
#
|
94
|
-
#
|
86
|
+
# @return [Boolean]
|
87
|
+
# @example
|
88
|
+
# signature = "# Demo Ruby Signature\r\nconfigure do |c|\r\n # Set regions to run in. Remove this line to run in all regions.\r\n c.valid_regions = [:us_east_1]\r\n # Override region to display as global. Useful when checking resources\r\n # like IAM that do not have a specific region.\r\n c.display_as = :global\r\n # deep_inspection works with set_data to automically collect\r\n # data fields for each alert. Not required.\r\n c.deep_inspection = [:users]\r\nend\r\n\r\n# Required perform method\r\ndef perform(aws)\r\n list_users = aws.iam.list_users\r\n count = list_users[:users].count\r\n\r\n # Set data for deep_inspection to use\r\n set_data(list_users)\r\n\r\n if count == 0\r\n fail(user_count: count, condition: 'count == 0')\r\n else\r\n pass(user_count: count, condition: 'count >= 1')\r\n end\r\nend\r\n"
|
89
|
+
# result = ESP::CustomSignature::Result.new(signature: signature, language: "ruby", region_id: 1, external_account_id: 1)
|
90
|
+
# result.save
|
95
91
|
end
|
96
92
|
end
|
97
93
|
end
|
@@ -3,13 +3,16 @@ module ESP
|
|
3
3
|
autoload :Definition, File.expand_path(File.dirname(__FILE__) + '/custom_signature/definition')
|
4
4
|
autoload :Result, File.expand_path(File.dirname(__FILE__) + '/custom_signature/result')
|
5
5
|
|
6
|
-
##
|
7
6
|
# The organization this custom signature belongs to.
|
7
|
+
#
|
8
|
+
# @return [ESP::Organization]
|
8
9
|
belongs_to :organization, class_name: 'ESP::Organization'
|
10
|
+
# @return [ActiveResource::PaginatedCollection<ESP::CustomSignature::Definition>]
|
9
11
|
has_many :definitions, class_name: 'ESP::CustomSignature::Definition'
|
10
12
|
|
11
|
-
##
|
12
13
|
# The collection of teams that belong to the custom_signature.
|
14
|
+
#
|
15
|
+
# @return [ActiveResource::PaginatedCollection<ESP::Team>]
|
13
16
|
def teams
|
14
17
|
return attributes['teams'] if attributes['teams'].present?
|
15
18
|
Team.where(custom_signatures_id_eq: id)
|
@@ -17,89 +20,77 @@ module ESP
|
|
17
20
|
|
18
21
|
# Create a suppression for this custom signature.
|
19
22
|
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
# +arguments+ | Required | A hash of signature suppression attributes
|
23
|
-
#
|
24
|
-
# ===== Valid Arguments
|
25
|
-
#
|
26
|
-
# See {API documentation}[http://api-docs.evident.io?ruby#suppression-create] for valid arguments
|
23
|
+
# @param arguments [Hash] Required hash of signature suppression attributes
|
24
|
+
# ===== Valid Arguments
|
27
25
|
#
|
28
|
-
#
|
26
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#suppression-create] for valid arguments
|
27
|
+
# @return [ESP::Suppression::Signature]
|
28
|
+
# @example
|
29
29
|
# suppress(regions: ['us_east_1'], external_account_ids: [5], reason: 'My very good reason for creating this suppression')
|
30
30
|
def suppress(arguments = {})
|
31
31
|
arguments = arguments.with_indifferent_access
|
32
32
|
ESP::Suppression::Signature.create(custom_signature_ids: [id], regions: Array(arguments[:regions]), external_account_ids: Array(arguments[:external_account_ids]), reason: arguments[:reason])
|
33
33
|
end
|
34
34
|
|
35
|
-
#
|
36
|
-
#
|
35
|
+
# @!method self.where(clauses = {})
|
36
|
+
# Find a list of custom signatures filtered by search parameters.
|
37
37
|
#
|
38
|
-
#
|
38
|
+
# *call-seq* -> +super.where(clauses = {})+
|
39
39
|
#
|
40
|
-
#
|
40
|
+
# @param clauses [Hash] Attributes with appended predicates to search, sort, and include.
|
41
|
+
# ===== Valid Clauses
|
41
42
|
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-attributes] for valid arguments
|
45
|
-
#
|
46
|
-
# :call-seq:
|
47
|
-
# where(clauses = {})
|
43
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-attributes] for valid arguments
|
44
|
+
# @return [ActiveResource::PaginatedCollection<ESP::CustomSignature>]
|
48
45
|
|
49
|
-
|
50
|
-
#
|
51
|
-
# Find a CustomSignature by id
|
52
|
-
#
|
53
|
-
# ==== Parameter
|
54
|
-
#
|
55
|
-
# +id+ | Required | The ID of the custom signature to retrieve
|
46
|
+
# @!method self.find(id, options = {})
|
47
|
+
# Find a CustomSignature by id
|
56
48
|
#
|
57
|
-
# +options
|
49
|
+
# *call-seq* -> +super.find(id, options = {})+
|
58
50
|
#
|
59
|
-
#
|
51
|
+
# @param id [Integer, Numeric, #to_i] Required ID of the custom signature to retrieve.
|
52
|
+
# @param options [Hash] Optional hash of options.
|
53
|
+
# ===== Valid Options
|
60
54
|
#
|
61
|
-
#
|
55
|
+
# +include+ | The list of associated objects to return on the initial request.
|
62
56
|
#
|
63
|
-
#
|
57
|
+
# ===== Valid Includable Associations
|
64
58
|
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
# :call-seq:
|
68
|
-
# find(id, options = {})
|
69
|
-
|
70
|
-
# :singleton-method: all
|
71
|
-
# Return a paginated CustomSignature list
|
59
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-attributes] for valid arguments
|
60
|
+
# @return [ESP::CustomSignature]
|
72
61
|
|
73
|
-
#
|
74
|
-
#
|
75
|
-
# :call-seq:
|
76
|
-
# create(attributes={})
|
77
|
-
#
|
78
|
-
# ==== Parameter
|
79
|
-
#
|
80
|
-
# +attributes+ | Required | A hash of custom signature attributes
|
62
|
+
# @!method self.all
|
63
|
+
# Return a paginated CustomSignature list
|
81
64
|
#
|
82
|
-
#
|
83
|
-
|
84
|
-
#
|
65
|
+
# @return [ActiveResource::PaginatedCollection<ESP::CustomSignature>]
|
66
|
+
|
67
|
+
# @!method self.create(attributes = {})
|
68
|
+
# Create a CustomSignature
|
69
|
+
# *call-seq* -> +super.create(attributes={})+
|
85
70
|
#
|
86
|
-
#
|
71
|
+
# @param attributes [Hash] Required hash of custom signature attributes.
|
72
|
+
# ===== Valid Attributes
|
87
73
|
#
|
88
|
-
#
|
74
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-create] for valid arguments
|
75
|
+
# @return [ESP::CustomSignature]
|
76
|
+
# @example
|
77
|
+
# custom_signature = ESP::CustomSignature.create(description: "A test custom signature.", identifier: "AWS::IAM::001", name: "Test Signature", risk_level: "Medium")
|
89
78
|
|
90
|
-
#
|
91
|
-
#
|
79
|
+
# @!method save
|
80
|
+
# Create or update a CustomSignature
|
92
81
|
#
|
93
|
-
#
|
82
|
+
# ===== Valid Attributes
|
94
83
|
#
|
95
|
-
#
|
84
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#custom-signature-create] for valid arguments
|
96
85
|
#
|
97
|
-
#
|
98
|
-
#
|
99
|
-
#
|
100
|
-
#
|
86
|
+
# @return [Boolean]
|
87
|
+
# @example
|
88
|
+
# custom_signature = ESP::CustomSignature.new(description: "A test custom signature.", identifier: "AWS::IAM::001", name: "Test Signature", risk_level: "Medium")
|
89
|
+
# custom_signature.save
|
101
90
|
|
102
|
-
#
|
103
|
-
#
|
91
|
+
# @!method destroy
|
92
|
+
# Delete a CustomSignature
|
93
|
+
#
|
94
|
+
# @return [self]
|
104
95
|
end
|
105
96
|
end
|
@@ -3,6 +3,8 @@ module ESP
|
|
3
3
|
# Not Implemented. You cannot search for a Dashboard.
|
4
4
|
#
|
5
5
|
# Regular ARELlike methods are disabled.
|
6
|
+
#
|
7
|
+
# @return [void]
|
6
8
|
def self.find(*)
|
7
9
|
fail ESP::NotImplementedError, 'Regular ARELlike methods are disabled. Use the .recent method.'
|
8
10
|
end
|
@@ -10,26 +12,30 @@ module ESP
|
|
10
12
|
# Not Implemented. You cannot search for a Dashboard.
|
11
13
|
#
|
12
14
|
# Regular ARELlike methods are disabled.
|
15
|
+
#
|
16
|
+
# @return [void]
|
13
17
|
def self.where(*)
|
14
18
|
fail ESP::NotImplementedError, 'Regular ARELlike methods are disabled. Use the .recent method.'
|
15
19
|
end
|
16
20
|
|
17
21
|
# Not Implemented. You cannot create or update a Dashboard.
|
22
|
+
#
|
23
|
+
# @return [void]
|
18
24
|
def save
|
19
25
|
fail ESP::NotImplementedError
|
20
26
|
end
|
21
27
|
|
22
28
|
# Not Implemented. You cannot destroy a Dashboard.
|
29
|
+
#
|
30
|
+
# @return [void]
|
23
31
|
def destroy
|
24
32
|
fail ESP::NotImplementedError
|
25
33
|
end
|
26
34
|
|
27
|
-
#
|
28
|
-
#
|
29
|
-
# ==== Note
|
35
|
+
# @api private
|
36
|
+
# Returns with data from reports run in the last 2 hours
|
30
37
|
#
|
31
|
-
#
|
32
|
-
# part of the public API and may change without notice.
|
38
|
+
# @return [ESP::Dashboard]
|
33
39
|
def self.recent
|
34
40
|
# call find_every directly since find is overridden/not implemented
|
35
41
|
find_every from: "#{prefix}dashboard/recent.#{format.extension}"
|
@@ -1,111 +1,112 @@
|
|
1
1
|
module ESP
|
2
2
|
class ExternalAccount < ESP::Resource
|
3
|
-
##
|
4
3
|
# The organization the external account belongs to.
|
4
|
+
#
|
5
|
+
# @return [ESP::Organization]
|
5
6
|
belongs_to :organization, class_name: 'ESP::Organization'
|
6
7
|
|
7
|
-
##
|
8
8
|
# The sub_organization the external account belongs to.
|
9
|
+
#
|
10
|
+
# @return [ESP::SubOrganization]
|
9
11
|
belongs_to :sub_organization, class_name: 'ESP::SubOrganization'
|
10
12
|
|
11
|
-
##
|
12
13
|
# The team the external account belongs to.
|
14
|
+
#
|
15
|
+
# @return [ESP::Team]
|
13
16
|
belongs_to :team, class_name: 'ESP::Team'
|
14
17
|
|
15
|
-
##
|
16
18
|
# The collection of reports that belong to the team.
|
19
|
+
#
|
20
|
+
# @return [ActiveResource::PaginatedCollection<ESP::Report>]
|
17
21
|
has_many :reports, class_name: 'ESP::Report'
|
18
22
|
|
19
23
|
# Helper to generate an external id.
|
20
24
|
# Called automatically when creating an ExternalAccount if +external_id+ is not already set.
|
25
|
+
#
|
26
|
+
# @return [String]
|
21
27
|
def generate_external_id
|
22
28
|
SecureRandom.uuid
|
23
29
|
end
|
24
30
|
|
25
31
|
# This instance method is called by the #save method when new? is true.
|
26
|
-
|
32
|
+
#
|
33
|
+
# @private
|
34
|
+
def create
|
27
35
|
attributes['external_id'] ||= generate_external_id
|
28
36
|
super
|
29
37
|
end
|
30
38
|
|
31
39
|
# Returns a collection of scan_intervals for the external account
|
32
40
|
#
|
33
|
-
#
|
34
|
-
#
|
41
|
+
# @return [ActiveResource::PaginatedCollection<ESP::ScanInterval>]
|
42
|
+
# @example
|
35
43
|
# external_account = ESP::ExternalAccount.find(345)
|
36
44
|
# scan_intervals = external_account.scan_intervals
|
37
45
|
def scan_intervals
|
38
46
|
ESP::ScanInterval.for_external_account(id)
|
39
47
|
end
|
40
48
|
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
# ==== Parameters
|
49
|
+
# @!method self.where(clauses = {})
|
50
|
+
# Return a paginated ExternalAccount list filtered by search parameters
|
45
51
|
#
|
46
|
-
# +clauses
|
52
|
+
# *call-seq* -> +super.where(clauses = {})+
|
47
53
|
#
|
48
|
-
#
|
54
|
+
# @param clauses [Hash] A hash of attributes with appended predicates to search, sort and include.
|
55
|
+
# ===== Valid Clauses
|
49
56
|
#
|
50
|
-
#
|
51
|
-
#
|
52
|
-
# :call-seq:
|
53
|
-
# where(clauses = {})
|
57
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#external-account-attributes] for valid arguments
|
58
|
+
# @return [ActiveResource::PaginatedCollection<ESP::ExternalAccount>]
|
54
59
|
|
55
|
-
|
56
|
-
#
|
57
|
-
# Find an ExternalAccount by id
|
58
|
-
#
|
59
|
-
# ==== Parameter
|
60
|
+
# @!method self.find(id)
|
61
|
+
# Find an ExternalAccount by id
|
60
62
|
#
|
61
|
-
# +id
|
63
|
+
# *call-seq* -> +super.find(id, options = {})+
|
62
64
|
#
|
63
|
-
#
|
65
|
+
# @overload find(id)
|
66
|
+
# @overload find(id, options = {})
|
67
|
+
# @param options [Hash] An optional hash of options.
|
68
|
+
# ===== Valid Options
|
64
69
|
#
|
65
|
-
#
|
70
|
+
# +include+ | The list of associated objects to return on the initial request.
|
66
71
|
#
|
67
|
-
#
|
72
|
+
# ===== Valid Includable Associations
|
68
73
|
#
|
69
|
-
#
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
# :call-seq:
|
74
|
-
# find(id, options = {})
|
75
|
-
|
76
|
-
# :singleton-method: all
|
77
|
-
# Return a paginated CustomSignature list
|
74
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#external-account-attributes] for valid arguments
|
75
|
+
# @param id [Integer, Numberic, #to_i] Required ID of the external account to retrieve.
|
76
|
+
# @return [ESP::ExternalAccount]
|
78
77
|
|
79
|
-
#
|
80
|
-
#
|
81
|
-
# :call-seq:
|
82
|
-
# create(attributes={})
|
83
|
-
#
|
84
|
-
# ==== Parameter
|
85
|
-
#
|
86
|
-
# +attributes+ | Required | A hash of external account attributes
|
78
|
+
# @!method self.all
|
79
|
+
# Return a paginated list
|
87
80
|
#
|
88
|
-
#
|
89
|
-
|
90
|
-
#
|
81
|
+
# @return [ActiveResource::PaginatedCollection<ESP::ExternalAccount>]
|
82
|
+
|
83
|
+
# @!method self.create(attributes = {})
|
84
|
+
# Create an ExternalAccount.
|
85
|
+
# *call-seq* -> +super.create(attributes={})+
|
91
86
|
#
|
92
|
-
#
|
87
|
+
# @param attributes [Hash] Required hash of external account attributes.
|
88
|
+
# ===== Valid Attributes
|
93
89
|
#
|
94
|
-
#
|
90
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#external-account-create] for valid arguments
|
91
|
+
# @return [ESP::ExternalAccount]
|
92
|
+
# @example
|
93
|
+
# external_account = ESP::ExternalAccount.create(arn: 'arn:from:aws', external_id: 'c40e6af4-a5a0-422a-9a42-3d7d236c3428', sub_organization_id: 4, team_id: 8)
|
95
94
|
|
96
|
-
#
|
97
|
-
#
|
95
|
+
# @!method save
|
96
|
+
# Create or update an ExternalAccount.
|
98
97
|
#
|
99
|
-
#
|
98
|
+
# ===== Valid Attributes
|
100
99
|
#
|
101
|
-
#
|
100
|
+
# See {API documentation}[http://api-docs.evident.io?ruby#external-account-create] for valid arguments
|
102
101
|
#
|
103
|
-
#
|
104
|
-
#
|
105
|
-
#
|
106
|
-
#
|
102
|
+
# @return [Boolean]
|
103
|
+
# @example
|
104
|
+
# external_account = ESP::ExternalAccount.new(arn: 'arn:from:aws', external_id: 'c40e6af4-a5a0-422a-9a42-3d7d236c3428', sub_organization_id: 4, team_id: 8)
|
105
|
+
# external_account.save
|
107
106
|
|
108
|
-
#
|
109
|
-
#
|
107
|
+
# @!method destroy
|
108
|
+
# Delete an ExternalAccount
|
109
|
+
#
|
110
|
+
# @return [self]
|
110
111
|
end
|
111
112
|
end
|
@@ -1,28 +1,33 @@
|
|
1
1
|
module ESP
|
2
2
|
class Metadata < ESP::Resource
|
3
3
|
# Not Implemented. You cannot search for Metadata.
|
4
|
+
#
|
5
|
+
# @return [void]
|
4
6
|
def self.where(*)
|
5
7
|
fail ESP::NotImplementedError
|
6
8
|
end
|
7
9
|
|
8
10
|
# Not Implemented. You cannot create or update Metadata.
|
11
|
+
#
|
12
|
+
# @return [void]
|
9
13
|
def save
|
10
14
|
fail ESP::NotImplementedError
|
11
15
|
end
|
12
16
|
|
13
17
|
# Not Implemented. You cannot destroy Metadata.
|
18
|
+
#
|
19
|
+
# @return [void]
|
14
20
|
def destroy
|
15
21
|
fail ESP::NotImplementedError
|
16
22
|
end
|
17
23
|
|
18
24
|
# Returns a metadata object for the given alert_id
|
19
|
-
# Convenience method to use instead of
|
25
|
+
# Convenience method to use instead of {.find} since an alert_id is required to return metadata.
|
20
26
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
# ==== Example
|
27
|
+
# @param alert_id [Integer, Numeric, #to_i] Required ID of the alert to retrieve metadata for.
|
28
|
+
# @return [ESP::Metadata]
|
29
|
+
# @raise [ArgumentError] if no +alert_id+ is supplied.
|
30
|
+
# @example
|
26
31
|
# alerts = ESP::Metadata.for_alert(1194)
|
27
32
|
def self.for_alert(alert_id = nil)
|
28
33
|
fail ArgumentError, "You must supply an alert id." unless alert_id.present?
|
@@ -32,12 +37,17 @@ module ESP
|
|
32
37
|
|
33
38
|
# Find a Metadata object by id
|
34
39
|
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
# +id+ | Required | The ID of the metadata object to retrieve
|
40
|
+
# *call-seq* -> +super.find(id)+
|
38
41
|
#
|
39
|
-
#
|
40
|
-
#
|
42
|
+
# @overload find(id)
|
43
|
+
# @param id [Integer, Numeric, #to_i] Required ID of the metadata object to retrieve.
|
44
|
+
# @overload find(scope, options)
|
45
|
+
# *call-seq* -> +super.find(:one, options)+
|
46
|
+
# @api private
|
47
|
+
# @param scope [Object] *Example:* +:one+
|
48
|
+
# @param options [Hash] +params: { alert_id: Integer }+
|
49
|
+
# @raise [ArgumentError] if no +alert_id+ is supplied.
|
50
|
+
# @return [ESP::Metadata]
|
41
51
|
def self.find(*arguments)
|
42
52
|
scope = arguments.slice!(0)
|
43
53
|
options = (arguments.slice!(0) || {}).with_indifferent_access
|