esp_sdk 2.0.0.rc1 → 2.0.0
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 +4 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile.lock +1 -15
- data/assets/esp_logo.ans +27 -0
- data/bin/esp_console +2 -6
- data/esp_sdk.gemspec +0 -3
- data/lib/esp/extensions/active_resource/formats/json_api_format.rb +22 -3
- data/lib/esp/resources/alert.rb +6 -0
- data/lib/esp/resources/metadata.rb +50 -0
- data/lib/esp/resources/resource.rb +1 -0
- data/lib/esp/resources/signature.rb +5 -5
- data/lib/esp/version.rb +1 -1
- data/lib/esp.rb +1 -0
- data/lib/esp_sdk.rb +0 -1
- data/rdoc/ActiveResource/Formats.html +2 -0
- data/rdoc/ActiveResource/PaginatedCollection.html +2 -0
- data/rdoc/ActiveResource.html +2 -0
- data/rdoc/ESP/Alert.html +44 -7
- data/rdoc/ESP/CloudTrailEvent.html +2 -0
- data/rdoc/ESP/ContactRequest.html +2 -0
- data/rdoc/ESP/CustomSignature.html +2 -0
- data/rdoc/ESP/Dashboard.html +2 -0
- data/rdoc/ESP/ExternalAccount.html +2 -0
- data/rdoc/ESP/Metadata.html +411 -0
- data/rdoc/ESP/Organization.html +2 -0
- data/rdoc/ESP/Region.html +2 -0
- data/rdoc/ESP/Report.html +2 -0
- data/rdoc/ESP/Service.html +2 -0
- data/rdoc/ESP/Signature.html +9 -7
- data/rdoc/ESP/Stat.html +2 -0
- data/rdoc/ESP/StatCustomSignature.html +2 -0
- data/rdoc/ESP/StatRegion.html +2 -0
- data/rdoc/ESP/StatService.html +2 -0
- data/rdoc/ESP/StatSignature.html +2 -0
- data/rdoc/ESP/SubOrganization.html +2 -0
- data/rdoc/ESP/Suppression/Region.html +2 -0
- data/rdoc/ESP/Suppression/Signature.html +2 -0
- data/rdoc/ESP/Suppression/UniqueIdentifier.html +2 -0
- data/rdoc/ESP/Suppression.html +2 -0
- data/rdoc/ESP/Tag.html +2 -0
- data/rdoc/ESP/Team.html +2 -0
- data/rdoc/ESP/User.html +2 -0
- data/rdoc/ESP.html +3 -0
- data/rdoc/README_md.html +2 -0
- data/rdoc/created.rid +31 -30
- data/rdoc/index.html +2 -0
- data/rdoc/js/search_index.js +1 -1
- data/rdoc/table_of_contents.html +218 -203
- data/test/esp/extensions/active_resource/formats/json_api_format_test.rb +28 -5
- data/test/esp/resources/alert_test.rb +26 -4
- data/test/esp/resources/custom_signature_test.rb +2 -2
- data/test/esp/resources/metadata_test.rb +98 -0
- data/test/esp/resources/resource_test.rb +10 -0
- data/test/esp/resources/signature_test.rb +9 -9
- data/test/esp/resources/suppression_test.rb +4 -4
- data/test/factories/alerts.rb +5 -1
- data/test/factories/cloud_trail_events.rb +1 -1
- data/test/factories/contact_requests.rb +15 -8
- data/test/factories/metadata.rb +9 -0
- data/test/test_helper.rb +0 -1
- metadata +12 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 346fea31e490e4806a446f57683828c302ef3289
|
4
|
+
data.tar.gz: 8c429d99558d3b111eb4eabb7d7a35419391ab23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ad3f1c191a879a5c17b3042941b7a590918f48a34e597beaf1c06d293d653cb49ac958f4e539ee717d24cac092861fbfce903e870e8ec0be09557542e3e0d82
|
7
|
+
data.tar.gz: d68c27b4c8fd22fe0dd65a2c4d702b4f8d2a19376e5e826514f1f6d9c8a40f2f316dbf6d6549cccbc164418a463c73e35a2a9e05433bb11f11888526a1a5e246
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
## [Unreleased]
|
2
|
+
### Added
|
3
|
+
- Implemented searching using `where` on many object.
|
4
|
+
|
5
|
+
## [2.0.0] - 2015-12-16
|
6
|
+
### Added
|
7
|
+
- Separate Metadata object
|
8
|
+
- Metadata relationship to the Alert object.
|
9
|
+
- Set the User-Agent header to "Ruby SDK #{ESP::VERSION}"
|
10
|
+
|
11
|
+
### Removed
|
12
|
+
- Unnecessary dependencies.
|
13
|
+
|
14
|
+
## [2.0.0.rc1] - 2015-11-05
|
15
|
+
### Added
|
16
|
+
- Complete rewrite. See the README for the new DSL.
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
esp_sdk (2.0.0
|
4
|
+
esp_sdk (2.0.0)
|
5
5
|
activeresource (~> 4.0.0)
|
6
6
|
api-auth
|
7
|
-
artii
|
8
|
-
awesome_print
|
9
|
-
catpix
|
10
7
|
rack
|
11
8
|
|
12
9
|
GEM
|
@@ -28,19 +25,12 @@ GEM
|
|
28
25
|
addressable (2.3.8)
|
29
26
|
ansi (1.5.0)
|
30
27
|
api-auth (1.3.2)
|
31
|
-
artii (2.1.1)
|
32
28
|
ast (2.0.0)
|
33
29
|
astrolabe (1.3.1)
|
34
30
|
parser (~> 2.2)
|
35
|
-
awesome_print (1.6.1)
|
36
31
|
bourne (1.6.0)
|
37
32
|
mocha (~> 1.1)
|
38
33
|
builder (3.2.2)
|
39
|
-
catpix (0.2.0)
|
40
|
-
docopt (~> 0.5, >= 0.5.0)
|
41
|
-
rmagick (~> 2.15, >= 2.15.2)
|
42
|
-
ruby-terminfo (~> 0.1, >= 0.1.1)
|
43
|
-
tco (~> 0.1, >= 0.1.8)
|
44
34
|
coderay (1.1.0)
|
45
35
|
coveralls (0.8.0)
|
46
36
|
multi_json (~> 1.10)
|
@@ -51,7 +41,6 @@ GEM
|
|
51
41
|
crack (0.4.2)
|
52
42
|
safe_yaml (~> 1.0.0)
|
53
43
|
docile (1.1.5)
|
54
|
-
docopt (0.5.0)
|
55
44
|
factory_girl (4.5.0)
|
56
45
|
activesupport (>= 3.0.0)
|
57
46
|
ffi (1.9.10)
|
@@ -114,7 +103,6 @@ GEM
|
|
114
103
|
rest-client (1.7.3)
|
115
104
|
mime-types (>= 1.16, < 3.0)
|
116
105
|
netrc (~> 0.7)
|
117
|
-
rmagick (2.15.4)
|
118
106
|
rubocop (0.34.2)
|
119
107
|
astrolabe (~> 1.3)
|
120
108
|
parser (>= 2.2.2.5, < 3.0)
|
@@ -122,7 +110,6 @@ GEM
|
|
122
110
|
rainbow (>= 1.99.1, < 3.0)
|
123
111
|
ruby-progressbar (~> 1.4)
|
124
112
|
ruby-progressbar (1.7.5)
|
125
|
-
ruby-terminfo (0.1.1)
|
126
113
|
safe_yaml (1.0.4)
|
127
114
|
shellany (0.0.1)
|
128
115
|
shoulda (3.5.0)
|
@@ -137,7 +124,6 @@ GEM
|
|
137
124
|
simplecov-html (~> 0.9.0)
|
138
125
|
simplecov-html (0.9.0)
|
139
126
|
slop (3.6.0)
|
140
|
-
tco (0.1.8)
|
141
127
|
term-ansicolor (1.3.0)
|
142
128
|
tins (~> 1.0)
|
143
129
|
thor (0.19.1)
|
data/assets/esp_logo.ans
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;24m▄[0m[38;5;25m▄[0m
|
7
|
+
[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m
|
8
|
+
[48;5;25m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;67m[38;5;24m▀[0m[0m[48;5;254m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;231m[38;5;24m▀[0m[0m[48;5;255m[38;5;24m▀[0m[0m[48;5;67m[38;5;24m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;25m [0m
|
9
|
+
[38;5;24m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;252m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;67m[38;5;24m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;25m [0m
|
10
|
+
[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;251m[38;5;252m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;110m[38;5;231m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m
|
11
|
+
[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;67m[38;5;110m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;67m[38;5;24m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;252m[38;5;110m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;110m[38;5;252m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m
|
12
|
+
[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;253m[38;5;231m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;255m[38;5;110m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m[38;5;67m▀[0m[0m[48;5;24m[38;5;67m▀[0m[0m[48;5;24m[38;5;67m▀[0m[0m[48;5;24m[38;5;67m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;25m[38;5;24m▀[0m[0m
|
13
|
+
[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m[38;5;110m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m[38;5;110m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;231m[38;5;67m▀[0m[0m[48;5;110m[38;5;25m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m
|
14
|
+
[38;5;25m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;67m[38;5;252m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;252m[38;5;231m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[38;5;24m▀[0m
|
15
|
+
[38;5;24m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;67m[38;5;254m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;255m [0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;252m▀[0m[0m[48;5;24m[38;5;67m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m
|
16
|
+
[38;5;24m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m[38;5;252m▀[0m[0m[48;5;255m[38;5;231m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m[38;5;253m▀[0m[0m[48;5;110m[38;5;24m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;67m[38;5;24m▀[0m[0m[48;5;110m[38;5;24m▀[0m[0m[48;5;110m[38;5;24m▀[0m[0m[48;5;110m[38;5;24m▀[0m[0m[48;5;110m[38;5;24m▀[0m[0m[48;5;25m[38;5;24m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;25m[38;5;24m▀[0m[0m
|
17
|
+
[38;5;25m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m[38;5;67m▀[0m[0m[48;5;251m[38;5;231m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m[38;5;67m▀[0m[0m[48;5;67m[38;5;24m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;67m[38;5;24m▀[0m[0m[48;5;231m[38;5;110m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;25m[38;5;254m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m
|
18
|
+
[38;5;25m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m[38;5;253m▀[0m[0m[48;5;255m[38;5;231m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;110m[38;5;231m▀[0m[0m[48;5;24m[38;5;67m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[38;5;24m▀[0m
|
19
|
+
[38;5;24m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m[38;5;25m▀[0m[0m[48;5;25m[38;5;255m▀[0m[0m[48;5;255m[38;5;231m▀[0m[0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;231m [0m[48;5;110m[38;5;231m▀[0m[0m[48;5;24m[38;5;110m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[38;5;24m▀[0m
|
20
|
+
[38;5;24m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m[38;5;253m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;110m[38;5;231m▀[0m[0m[48;5;110m[38;5;231m▀[0m[0m[48;5;67m[38;5;231m▀[0m[0m[48;5;24m[38;5;110m▀[0m[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[38;5;24m▀[0m
|
21
|
+
[38;5;24m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[38;5;24m▀[0m
|
22
|
+
[38;5;24m▀[0m[38;5;24m▀[0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[48;5;24m [0m[38;5;24m▀[0m
|
23
|
+
[38;5;25m▀[0m[38;5;24m▀[0m[38;5;24m▀[0m[38;5;24m▀[0m[38;5;24m▀[0m
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
data/bin/esp_console
CHANGED
@@ -53,13 +53,9 @@ module ESP
|
|
53
53
|
end
|
54
54
|
|
55
55
|
begin
|
56
|
-
|
57
|
-
logo = File.expand_path(File.dirname(__FILE__) + '/../assets/logo.png')
|
58
|
-
Catpix::print_image logo
|
56
|
+
puts File.read(File.expand_path(File.dirname(__FILE__) + '/../assets/esp_logo.ans'))
|
59
57
|
rescue
|
60
|
-
|
61
|
-
artii = Artii::Base.new(font: 'slant')
|
62
|
-
print artii.asciify('E.S.P')
|
58
|
+
#swallow the error
|
63
59
|
end
|
64
60
|
print <<-banner
|
65
61
|
|
data/esp_sdk.gemspec
CHANGED
@@ -72,7 +72,7 @@ module ActiveResource
|
|
72
72
|
|
73
73
|
def self.parse_relationships!(object, included)
|
74
74
|
object.fetch('relationships', {}).each do |assoc, details|
|
75
|
-
extract_foreign_keys!(object, assoc, details
|
75
|
+
extract_foreign_keys!(object, assoc, details)
|
76
76
|
merge_included_objects!(object, assoc, details['data'], included)
|
77
77
|
end
|
78
78
|
end
|
@@ -82,8 +82,17 @@ module ActiveResource
|
|
82
82
|
object.merge! object.delete('attributes') unless object['attributes'].blank?
|
83
83
|
end
|
84
84
|
|
85
|
-
def self.extract_foreign_keys!(object, assoc,
|
86
|
-
|
85
|
+
def self.extract_foreign_keys!(object, assoc, assoc_details)
|
86
|
+
data = assoc_details['data']
|
87
|
+
related_link = assoc_details.fetch('links', {}).fetch('related', {})
|
88
|
+
if data.present?
|
89
|
+
parse_data(object, assoc, data)
|
90
|
+
elsif related_link.present?
|
91
|
+
parse_related_link(object, assoc, related_link)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.parse_data(object, assoc, data)
|
87
96
|
if data.is_a? Array
|
88
97
|
object["#{assoc.singularize}_ids"] = data.map { |d| d['id'] }
|
89
98
|
else
|
@@ -91,6 +100,16 @@ module ActiveResource
|
|
91
100
|
end
|
92
101
|
end
|
93
102
|
|
103
|
+
def self.parse_related_link(object, assoc, related_link)
|
104
|
+
# parse the url to get the id if the data node is not returned
|
105
|
+
related_link.scan(%r{/(\d+)\.json$}) do |id|
|
106
|
+
object["#{assoc}_id"] = id.first
|
107
|
+
end
|
108
|
+
return if object["#{assoc}_id"].present?
|
109
|
+
uri = URI.parse(related_link)
|
110
|
+
object["#{assoc.singularize}_ids"] = Rack::Utils.parse_nested_query(CGI.unescape(uri.query)).fetch('filter', {}).fetch('id_in', []) if uri.query.present?
|
111
|
+
end
|
112
|
+
|
94
113
|
def self.merge_included_objects!(object, assoc, data, included)
|
95
114
|
return if included.blank?
|
96
115
|
object[assoc] = case data
|
data/lib/esp/resources/alert.rb
CHANGED
@@ -28,6 +28,12 @@ module ESP
|
|
28
28
|
# Returns the tags associated with this alert.
|
29
29
|
has_many :tags, class_name: 'ESP::Tag'
|
30
30
|
|
31
|
+
##
|
32
|
+
# Returns the metadata associated with this alert.
|
33
|
+
def metadata
|
34
|
+
ESP::Metadata.for_alert(id)
|
35
|
+
end
|
36
|
+
|
31
37
|
# Not Implemented. You cannot create or update an Alert.
|
32
38
|
def save
|
33
39
|
fail ESP::NotImplementedError
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module ESP
|
2
|
+
class Metadata < ESP::Resource
|
3
|
+
# Not Implemented. You cannot search for Metadata.
|
4
|
+
def self.where(*)
|
5
|
+
fail ESP::NotImplementedError
|
6
|
+
end
|
7
|
+
|
8
|
+
# Not Implemented. You cannot create or update Metadata.
|
9
|
+
def save
|
10
|
+
fail ESP::NotImplementedError
|
11
|
+
end
|
12
|
+
|
13
|
+
# Not Implemented. You cannot destroy Metadata.
|
14
|
+
def destroy
|
15
|
+
fail ESP::NotImplementedError
|
16
|
+
end
|
17
|
+
|
18
|
+
# Returns a metadata object for the given alert_id
|
19
|
+
# Convenience method to use instead of ::find since an alert_id is required to return metadata.
|
20
|
+
#
|
21
|
+
# ==== Parameter
|
22
|
+
#
|
23
|
+
# +alert_id+ | Required | The ID of the alert to retrieve metadata for
|
24
|
+
#
|
25
|
+
# ==== Example
|
26
|
+
# alerts = ESP::Metadata.for_alert(1194)
|
27
|
+
def self.for_alert(alert_id = nil)
|
28
|
+
fail ArgumentError, "You must supply an alert id." unless alert_id.present?
|
29
|
+
from = "#{prefix}alerts/#{alert_id}/metadata.json"
|
30
|
+
find(:one, from: from)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Find a Metadata object by id
|
34
|
+
#
|
35
|
+
# ==== Parameter
|
36
|
+
#
|
37
|
+
# +id+ | Required | The ID of the metadata object to retrieve
|
38
|
+
#
|
39
|
+
# :call-seq:
|
40
|
+
# find(id)
|
41
|
+
def self.find(*arguments)
|
42
|
+
scope = arguments.slice!(0)
|
43
|
+
options = (arguments.slice!(0) || {}).with_indifferent_access
|
44
|
+
return super(scope, options) if scope.is_a?(Numeric) || options[:from].present?
|
45
|
+
params = options.fetch(:params, {}).with_indifferent_access
|
46
|
+
alert_id = params.delete(:alert_id)
|
47
|
+
for_alert(alert_id)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -4,6 +4,7 @@ module ESP
|
|
4
4
|
self.format = ActiveResource::Formats::JsonAPIFormat
|
5
5
|
with_api_auth(ESP.access_key_id, ESP.secret_access_key)
|
6
6
|
headers["Content-Type"] = format.mime_type
|
7
|
+
headers["User-Agent"] = "Ruby SDK #{ESP::VERSION}"
|
7
8
|
|
8
9
|
self.collection_parser = ActiveResource::PaginatedCollection
|
9
10
|
|
@@ -26,11 +26,11 @@ module ESP
|
|
26
26
|
#
|
27
27
|
# +external_account_id+ | Required | The ID of the external account to run this custom signature against
|
28
28
|
#
|
29
|
-
# +
|
29
|
+
# +region+ | Required | Region name to run this custom signature against
|
30
30
|
#
|
31
31
|
# ==== Example
|
32
32
|
# signature = ESP::Signature.find(3)
|
33
|
-
# alerts = signature.run!(external_account_id: 3,
|
33
|
+
# alerts = signature.run!(external_account_id: 3, region: 'us_east_1')
|
34
34
|
def run!(arguments = {})
|
35
35
|
result = run(arguments)
|
36
36
|
return result if result.is_a?(ActiveResource::Collection)
|
@@ -50,15 +50,15 @@ module ESP
|
|
50
50
|
#
|
51
51
|
# +external_account_id+ | Required | The ID of the external account to run this custom signature against
|
52
52
|
#
|
53
|
-
# +
|
53
|
+
# +region+ | Required | Region name to run this custom signature against
|
54
54
|
#
|
55
55
|
# ==== Example
|
56
56
|
# signature = ESP::Signature.find(3)
|
57
|
-
# alerts = signature.run(external_account_id: 3,
|
57
|
+
# alerts = signature.run(external_account_id: 3, region: 'us_east_1')
|
58
58
|
def run(arguments = {})
|
59
59
|
arguments = arguments.with_indifferent_access
|
60
60
|
attributes['external_account_id'] ||= arguments[:external_account_id]
|
61
|
-
attributes['
|
61
|
+
attributes['region'] ||= arguments[:region]
|
62
62
|
|
63
63
|
response = connection.post("#{self.class.prefix}signatures/#{id}/run.json", to_json)
|
64
64
|
ESP::Alert.send(:instantiate_collection, self.class.format.decode(response.body))
|
data/lib/esp/version.rb
CHANGED
data/lib/esp.rb
CHANGED
@@ -79,6 +79,7 @@ module ESP
|
|
79
79
|
autoload :RawAlert, File.expand_path(File.dirname(__FILE__) + '/esp/resources/raw_alert')
|
80
80
|
autoload :Dashboard, File.expand_path(File.dirname(__FILE__) + '/esp/resources/dashboard')
|
81
81
|
autoload :CloudTrailEvent, File.expand_path(File.dirname(__FILE__) + '/esp/resources/cloud_trail_event')
|
82
|
+
autoload :Metadata, File.expand_path(File.dirname(__FILE__) + '/esp/resources/metadata')
|
82
83
|
autoload :Tag, File.expand_path(File.dirname(__FILE__) + '/esp/resources/tag')
|
83
84
|
autoload :Region, File.expand_path(File.dirname(__FILE__) + '/esp/resources/region')
|
84
85
|
autoload :Suppression, File.expand_path(File.dirname(__FILE__) + '/esp/resources/suppression')
|
data/lib/esp_sdk.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'active_support/all'
|
2
2
|
require 'active_resource'
|
3
3
|
require 'api_auth'
|
4
|
-
require 'awesome_print'
|
5
4
|
require_relative 'esp/extensions/active_resource/paginated_collection'
|
6
5
|
require_relative 'esp/extensions/active_resource/validations'
|
7
6
|
require_relative 'esp/extensions/active_resource/formats/json_api_format'
|
@@ -100,6 +100,8 @@
|
|
100
100
|
|
101
101
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
102
102
|
|
103
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
104
|
+
|
103
105
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
104
106
|
|
105
107
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|
@@ -148,6 +148,8 @@
|
|
148
148
|
|
149
149
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
150
150
|
|
151
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
152
|
+
|
151
153
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
152
154
|
|
153
155
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|
data/rdoc/ActiveResource.html
CHANGED
@@ -104,6 +104,8 @@
|
|
104
104
|
|
105
105
|
<li><a href="./ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
106
106
|
|
107
|
+
<li><a href="./ESP/Metadata.html">ESP::Metadata</a>
|
108
|
+
|
107
109
|
<li><a href="./ESP/Organization.html">ESP::Organization</a>
|
108
110
|
|
109
111
|
<li><a href="./ESP/Region.html">ESP::Region</a>
|
data/rdoc/ESP/Alert.html
CHANGED
@@ -85,6 +85,8 @@
|
|
85
85
|
|
86
86
|
<li ><a href="#method-i-external_account">#external_account</a>
|
87
87
|
|
88
|
+
<li ><a href="#method-i-metadata">#metadata</a>
|
89
|
+
|
88
90
|
<li ><a href="#method-i-region">#region</a>
|
89
91
|
|
90
92
|
<li ><a href="#method-i-save">#save</a>
|
@@ -142,6 +144,8 @@
|
|
142
144
|
|
143
145
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
144
146
|
|
147
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
148
|
+
|
145
149
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
146
150
|
|
147
151
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|
@@ -240,7 +244,7 @@
|
|
240
244
|
|
241
245
|
|
242
246
|
<div class="method-source-code" id="find-source">
|
243
|
-
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line
|
247
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 96</span>
|
244
248
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">find</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">arguments</span>)
|
245
249
|
<span class="ruby-identifier">scope</span> = <span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-value">0</span>)
|
246
250
|
<span class="ruby-identifier">options</span> = (<span class="ruby-identifier">arguments</span>.<span class="ruby-identifier">slice!</span>(<span class="ruby-value">0</span>) <span class="ruby-operator">||</span> {}).<span class="ruby-identifier">with_indifferent_access</span>
|
@@ -328,7 +332,7 @@ signatures with the given identifier.</p>
|
|
328
332
|
|
329
333
|
|
330
334
|
<div class="method-source-code" id="for_report-source">
|
331
|
-
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line
|
335
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 82</span>
|
332
336
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">for_report</span>(<span class="ruby-identifier">report_id</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">arguments</span> = {})
|
333
337
|
<span class="ruby-identifier">fail</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a report id."</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">report_id</span>.<span class="ruby-identifier">present?</span>
|
334
338
|
<span class="ruby-identifier">from</span> = <span class="ruby-node">"#{prefix}reports/#{report_id}/alerts.json"</span>
|
@@ -435,7 +439,7 @@ signature or custom signature but not both will be present.</p>
|
|
435
439
|
|
436
440
|
|
437
441
|
<div class="method-source-code" id="destroy-source">
|
438
|
-
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line
|
442
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 43</span>
|
439
443
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">destroy</span>
|
440
444
|
<span class="ruby-identifier">fail</span> <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>
|
441
445
|
<span class="ruby-keyword">end</span></pre>
|
@@ -481,6 +485,39 @@ signature or custom signature but not both will be present.</p>
|
|
481
485
|
</div><!-- external_account-method -->
|
482
486
|
|
483
487
|
|
488
|
+
<div id="method-i-metadata" class="method-detail ">
|
489
|
+
|
490
|
+
<div class="method-heading">
|
491
|
+
<span class="method-name">metadata</span><span
|
492
|
+
class="method-args">()</span>
|
493
|
+
|
494
|
+
<span class="method-click-advice">click to toggle source</span>
|
495
|
+
|
496
|
+
</div>
|
497
|
+
|
498
|
+
|
499
|
+
<div class="method-description">
|
500
|
+
|
501
|
+
<p>Returns the metadata associated with this alert.</p>
|
502
|
+
|
503
|
+
|
504
|
+
|
505
|
+
|
506
|
+
<div class="method-source-code" id="metadata-source">
|
507
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 33</span>
|
508
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">metadata</span>
|
509
|
+
<span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">Metadata</span>.<span class="ruby-identifier">for_alert</span>(<span class="ruby-identifier">id</span>)
|
510
|
+
<span class="ruby-keyword">end</span></pre>
|
511
|
+
</div><!-- metadata-source -->
|
512
|
+
|
513
|
+
</div>
|
514
|
+
|
515
|
+
|
516
|
+
|
517
|
+
|
518
|
+
</div><!-- metadata-method -->
|
519
|
+
|
520
|
+
|
484
521
|
<div id="method-i-region" class="method-detail ">
|
485
522
|
|
486
523
|
<div class="method-heading">
|
@@ -533,7 +570,7 @@ href="Alert.html">Alert</a>.</p>
|
|
533
570
|
|
534
571
|
|
535
572
|
<div class="method-source-code" id="save-source">
|
536
|
-
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line
|
573
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 38</span>
|
537
574
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">save</span>
|
538
575
|
<span class="ruby-identifier">fail</span> <span class="ruby-constant">ESP</span><span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>
|
539
576
|
<span class="ruby-keyword">end</span></pre>
|
@@ -603,7 +640,7 @@ custom signature but not both will be present.</p>
|
|
603
640
|
|
604
641
|
|
605
642
|
<div class="method-source-code" id="suppress_region-source">
|
606
|
-
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line
|
643
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 117</span>
|
607
644
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">suppress_region</span>(<span class="ruby-identifier">reason</span> = <span class="ruby-keyword">nil</span>)
|
608
645
|
<span class="ruby-identifier">suppress</span>(<span class="ruby-constant">Suppression</span><span class="ruby-operator">::</span><span class="ruby-constant">Region</span>, <span class="ruby-identifier">reason</span>)
|
609
646
|
<span class="ruby-keyword">end</span></pre>
|
@@ -640,7 +677,7 @@ custom signature but not both will be present.</p>
|
|
640
677
|
|
641
678
|
|
642
679
|
<div class="method-source-code" id="suppress_signature-source">
|
643
|
-
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line
|
680
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 109</span>
|
644
681
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">suppress_signature</span>(<span class="ruby-identifier">reason</span> = <span class="ruby-keyword">nil</span>)
|
645
682
|
<span class="ruby-identifier">suppress</span>(<span class="ruby-constant">Suppression</span><span class="ruby-operator">::</span><span class="ruby-constant">Signature</span>, <span class="ruby-identifier">reason</span>)
|
646
683
|
<span class="ruby-keyword">end</span></pre>
|
@@ -677,7 +714,7 @@ custom signature but not both will be present.</p>
|
|
677
714
|
|
678
715
|
|
679
716
|
<div class="method-source-code" id="suppress_unique_identifier-source">
|
680
|
-
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line
|
717
|
+
<pre><span class="ruby-comment"># File lib/esp/resources/alert.rb, line 125</span>
|
681
718
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier">suppress_unique_identifier</span>(<span class="ruby-identifier">reason</span> = <span class="ruby-keyword">nil</span>)
|
682
719
|
<span class="ruby-identifier">suppress</span>(<span class="ruby-constant">Suppression</span><span class="ruby-operator">::</span><span class="ruby-constant">UniqueIdentifier</span>, <span class="ruby-identifier">reason</span>)
|
683
720
|
<span class="ruby-keyword">end</span></pre>
|
@@ -122,6 +122,8 @@
|
|
122
122
|
|
123
123
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
124
124
|
|
125
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
126
|
+
|
125
127
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
126
128
|
|
127
129
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|
@@ -122,6 +122,8 @@
|
|
122
122
|
|
123
123
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
124
124
|
|
125
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
126
|
+
|
125
127
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
126
128
|
|
127
129
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|
@@ -134,6 +134,8 @@
|
|
134
134
|
|
135
135
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
136
136
|
|
137
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
138
|
+
|
137
139
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
138
140
|
|
139
141
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|
data/rdoc/ESP/Dashboard.html
CHANGED
@@ -122,6 +122,8 @@
|
|
122
122
|
|
123
123
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
124
124
|
|
125
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
126
|
+
|
125
127
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
126
128
|
|
127
129
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|
@@ -132,6 +132,8 @@
|
|
132
132
|
|
133
133
|
<li><a href="../ESP/ExternalAccount.html">ESP::ExternalAccount</a>
|
134
134
|
|
135
|
+
<li><a href="../ESP/Metadata.html">ESP::Metadata</a>
|
136
|
+
|
135
137
|
<li><a href="../ESP/Organization.html">ESP::Organization</a>
|
136
138
|
|
137
139
|
<li><a href="../ESP/Region.html">ESP::Region</a>
|