Skip to content

Commit d45890d

Browse files
authored
Merge pull request #124 from SumoLogic/sourabh-aws-observability
Sourabh aws observability
2 parents 305e7cf + 2336b08 commit d45890d

File tree

7 files changed

+155
-101
lines changed

7 files changed

+155
-101
lines changed

sumologic-app-utils/Test/SampleTemplate.yaml

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Resources:
4848
Properties:
4949
Location:
5050
ApplicationId: arn:aws:serverlessrepo:us-east-1:956882708938:applications/sumologic-app-utils
51-
SemanticVersion: 2.0.3
51+
SemanticVersion: 2.0.5
5252

5353
SumoLogicHelperPolicy:
5454
Type: AWS::IAM::Policy
@@ -118,7 +118,7 @@ Resources:
118118
DependsOn: SumoLogicHelperPolicy
119119
Type: AWS::S3::BucketPolicy
120120
Properties:
121-
Bucket: "sumologiclambdahelper-us-east-2"
121+
Bucket: "cf-templates-1qpf3unpuo1hw-us-east-2"
122122
PolicyDocument:
123123
Statement:
124124
- Sid: AWSCloudTrailAclCheck
@@ -127,14 +127,14 @@ Resources:
127127
Service: cloudtrail.amazonaws.com
128128
Action: s3:GetBucketAcl
129129
Resource:
130-
- "arn:aws:s3:::sumologiclambdahelper-us-east-2"
130+
- "arn:aws:s3:::cf-templates-1qpf3unpuo1hw-us-east-2"
131131
- Sid: AWSCloudTrailWrite
132132
Effect: Allow
133133
Principal:
134134
Service: cloudtrail.amazonaws.com
135135
Action: s3:PutObject
136136
Resource:
137-
- "arn:aws:s3:::sumologiclambdahelper-us-east-2/*"
137+
- "arn:aws:s3:::cf-templates-1qpf3unpuo1hw-us-east-2/*"
138138
Condition:
139139
StringEquals:
140140
s3:x-amz-acl: bucket-owner-full-control
@@ -144,7 +144,7 @@ Resources:
144144
Service: cloudtrail.amazonaws.com
145145
Action: s3:ListBucket
146146
Resource:
147-
- "arn:aws:s3:::sumologiclambdahelper-us-east-2"
147+
- "arn:aws:s3:::cf-templates-1qpf3unpuo1hw-us-east-2"
148148

149149
SumoCloudTrail:
150150
Type: Custom::AWSTrail
@@ -153,7 +153,7 @@ Resources:
153153
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
154154
IsLogging: true
155155
IsMultiRegionTrail: false
156-
S3BucketName: "sumologiclambdahelper-us-east-2"
156+
S3BucketName: "cf-templates-1qpf3unpuo1hw-us-east-2"
157157
TrailName: "Aws-Observability-onemoreupdae"
158158
RemoveOnDeleteStack: !Ref Section1eRemoveSumoResourcesOnDeleteStack
159159

@@ -225,7 +225,7 @@ Resources:
225225
SumoAccessID: !Ref Section1bSumoAccessID
226226
SumoAccessKey: !Ref Section1cSumoAccessKey
227227
SumoDeployment: !Ref Section1aSumoDeployment
228-
TargetBucketName: "sumologiclambdahelper-us-east-1"
228+
TargetBucketName: "cf-templates-1qpf3unpuo1hw-us-east-1"
229229
PathExpression: "asdasd"
230230
DateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
231231
DateLocatorRegex: '.*"updatedAt":"(.*)".*'
@@ -266,10 +266,8 @@ Resources:
266266
Properties:
267267
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
268268
RemoveOnDeleteStack: !Ref Section1eRemoveSumoResourcesOnDeleteStack
269-
ExplorerName: "Test EXPLORER"
270-
MetadataKeys:
271-
- "account"
272-
- "region"
269+
HierarchyName: "Test Explorer"
270+
HierarchyLevel: {"entityType":"account","nextLevelsWithConditions":[],"nextLevel":{"entityType":"region","nextLevelsWithConditions":[],"nextLevel":{"entityType":"namespace","nextLevelsWithConditions":[]}}}
273271
SumoAccessID: !Ref Section1bSumoAccessID
274272
SumoAccessKey: !Ref Section1cSumoAccessKey
275273
SumoDeployment: !Ref Section1aSumoDeployment
@@ -293,7 +291,7 @@ Resources:
293291
Properties:
294292
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
295293
Region: !Ref "AWS::Region"
296-
SourceApiUrl: "https://api.sumologic.com/api/v1/collectors/170503459/sources/779514196"
294+
SourceApiUrl: "https://api.us2.sumologic.com/api/v1/collectors/194268335/sources/1135631121"
297295
RemoveOnDeleteStack: !Ref Section1eRemoveSumoResourcesOnDeleteStack
298296
SumoAccessID: !Ref Section1bSumoAccessID
299297
SumoAccessKey: !Ref Section1cSumoAccessKey
@@ -353,7 +351,7 @@ Resources:
353351
Properties:
354352
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
355353
AWSResource: "vpc"
356-
BucketName: "sumologiclambdahelper-us-east-1"
354+
BucketName: "cf-templates-1qpf3unpuo1hw-us-east-1"
357355
Filter: ".*"
358356
BucketPrefix: "djvsdvsbdjb"
359357
AccountID: !Ref "AWS::AccountId"

sumologic-app-utils/deploy.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ if [ ! -f sumo_app_utils.zip ]; then
2626
rm -r python
2727
fi
2828

29-
version="2.0.3"
29+
version="2.0.5"
3030

3131
aws s3 cp sumo_app_utils.zip s3://$SAM_S3_BUCKET/sumo_app_utils/v"$version"/sumo_app_utils.zip --region $AWS_REGION --acl public-read
3232

sumologic-app-utils/packaged_sumo_app_utils.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,17 @@ Metadata:
2020
- sumologic
2121
- serverless
2222
Name: sumologic-app-utils
23-
SemanticVersion: 2.0.3
23+
SemanticVersion: 2.0.5
2424
SourceCodeUrl: https://github.com/SumoLogic/sumologic-aws-lambda/tree/master/sumologic-app-utils
2525
SpdxLicenseId: Apache-2.0
26-
ReadmeUrl: s3://appdevstore/sumo_app_utils/v2.0.3/4d5a92c06a7fa9d956a900e51a1f6be4
26+
ReadmeUrl: s3://appdevstore/sumo_app_utils/v2.0.5/4d5a92c06a7fa9d956a900e51a1f6be4
2727
Resources:
2828
SumoAppUtilsFunction:
2929
Type: AWS::Serverless::Function
3030
Properties:
3131
Handler: main.handler
3232
Runtime: python3.7
33-
CodeUri: s3://appdevstore/sumo_app_utils/v2.0.3/sumo_app_utils.zip
33+
CodeUri: s3://appdevstore/sumo_app_utils/v2.0.5/sumo_app_utils.zip
3434
MemorySize: 128
3535
Timeout: 300
3636
Policies:

sumologic-app-utils/src/sumologic.py

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import json
22
import requests
33
import time
4-
import random
4+
from random import uniform
5+
from requests.adapters import HTTPAdapter
6+
from requests.packages.urllib3.util.retry import Retry
57

68
try:
79
import cookielib
@@ -15,6 +17,9 @@ class SumoLogic(object):
1517

1618
def __init__(self, accessId, accessKey, endpoint=None, cookieFile='cookies.txt'):
1719
self.session = requests.Session()
20+
retries = Retry(total=3, backoff_factor=0.1, status_forcelist=[502, 503, 504, 429])
21+
self.session.mount('https://', HTTPAdapter(max_retries=retries))
22+
self.session.mount('http://', HTTPAdapter(max_retries=retries))
1823
self.session.auth = (accessId, accessKey)
1924
self.session.headers = {'content-type': 'application/json', 'accept': 'application/json'}
2025
cj = cookielib.FileCookieJar(cookieFile)
@@ -48,6 +53,7 @@ def get_versioned_endpoint(self, version):
4853

4954
def delete(self, method, params=None, version=DEFAULT_VERSION):
5055
endpoint = self.get_versioned_endpoint(version)
56+
time.sleep(uniform(2, 5))
5157
r = self.session.delete(endpoint + method, params=params)
5258
if 400 <= r.status_code < 600:
5359
r.reason = r.text
@@ -56,6 +62,7 @@ def delete(self, method, params=None, version=DEFAULT_VERSION):
5662

5763
def get(self, method, params=None, version=DEFAULT_VERSION):
5864
endpoint = self.get_versioned_endpoint(version)
65+
time.sleep(uniform(2, 5))
5966
r = self.session.get(endpoint + method, params=params)
6067
if 400 <= r.status_code < 600:
6168
r.reason = r.text
@@ -64,6 +71,7 @@ def get(self, method, params=None, version=DEFAULT_VERSION):
6471

6572
def post(self, method, params, headers=None, version=DEFAULT_VERSION):
6673
endpoint = self.get_versioned_endpoint(version)
74+
time.sleep(uniform(2, 5))
6775
r = self.session.post(endpoint + method, data=json.dumps(params), headers=headers)
6876
if 400 <= r.status_code < 600:
6977
r.reason = r.text
@@ -72,6 +80,7 @@ def post(self, method, params, headers=None, version=DEFAULT_VERSION):
7280

7381
def put(self, method, params, headers=None, version=DEFAULT_VERSION):
7482
endpoint = self.get_versioned_endpoint(version)
83+
time.sleep(uniform(2, 5))
7584
r = self.session.put(endpoint + method, data=json.dumps(params), headers=headers)
7685
if 400 <= r.status_code < 600:
7786
r.reason = r.text
@@ -205,15 +214,29 @@ def create_folder(self, name, description, parent_folder_id):
205214
def get_personal_folder(self):
206215
return self.get('/content/folders/personal', version='v2')
207216

217+
def get_folder_by_id(self, folder_id):
218+
response = self.get('/content/folders/%s' % folder_id, version='v2')
219+
return json.loads(response.text)
220+
221+
def update_folder_by_id(self, folder_id, content):
222+
response = self.put('/content/folders/%s' % folder_id, version='v2', params=content)
223+
return json.loads(response.text)
224+
225+
def copy_folder(self, folder_id, parent_folder_id):
226+
return self.post('/content/%s/copy?destinationFolder=%s' % (folder_id, parent_folder_id), params={},
227+
version='v2')
228+
208229
def import_content(self, folder_id, content, is_overwrite="false"):
209230
return self.post('/content/folders/%s/import?overwrite=%s' % (folder_id, is_overwrite), params=content,
210231
version='v2')
211232

212233
def check_import_status(self, folder_id, job_id):
213234
return self.get('/content/folders/%s/import/%s/status' % (folder_id, job_id), version='v2')
214235

236+
def check_copy_status(self, folder_id, job_id):
237+
return self.get('/content/%s/copy/%s/status' % (folder_id, job_id), version='v2')
238+
215239
def install_app(self, app_id, content):
216-
time.sleep(random.randint(1, 10))
217240
return self.post('/apps/%s/install' % (app_id), params=content)
218241

219242
def check_app_install_status(self, job_id):
@@ -223,14 +246,17 @@ def get_apps(self):
223246
response = self.get('/apps')
224247
return json.loads(response.text)
225248

226-
def create_explorer_view(self, content):
227-
return self.post('/topologies', params=content, version='v1alpha')
249+
def create_hierarchy(self, content):
250+
return self.post('/entities/hierarchies', params=content, version='v1')
251+
252+
def delete_hierarchy(self, hierarchy_id):
253+
return self.delete('/entities/hierarchies/%s' % hierarchy_id, version='v1')
228254

229-
def delete_explorer_view(self, explorer_id):
230-
return self.delete('/topologies/%s' % explorer_id, version='v1alpha')
255+
def update_hierarchy(self, hierarchy_id, content):
256+
return self.put('/entities/hierarchies/%s' % hierarchy_id, params=content, version='v1')
231257

232-
def get_explorer_views(self):
233-
response = self.get('/topologies', version='v1alpha')
258+
def get_entity_hierarchies(self):
259+
response = self.get('/entities/hierarchies', version='v1')
234260
return json.loads(response.text)
235261

236262
def create_metric_rule(self, content):

0 commit comments

Comments
 (0)