Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 11 additions & 13 deletions sumologic-app-utils/Test/SampleTemplate.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Resources:
Properties:
Location:
ApplicationId: arn:aws:serverlessrepo:us-east-1:956882708938:applications/sumologic-app-utils
SemanticVersion: 2.0.3
SemanticVersion: 2.0.5

SumoLogicHelperPolicy:
Type: AWS::IAM::Policy
Expand Down Expand Up @@ -118,7 +118,7 @@ Resources:
DependsOn: SumoLogicHelperPolicy
Type: AWS::S3::BucketPolicy
Properties:
Bucket: "sumologiclambdahelper-us-east-2"
Bucket: "cf-templates-1qpf3unpuo1hw-us-east-2"
PolicyDocument:
Statement:
- Sid: AWSCloudTrailAclCheck
Expand All @@ -127,14 +127,14 @@ Resources:
Service: cloudtrail.amazonaws.com
Action: s3:GetBucketAcl
Resource:
- "arn:aws:s3:::sumologiclambdahelper-us-east-2"
- "arn:aws:s3:::cf-templates-1qpf3unpuo1hw-us-east-2"
- Sid: AWSCloudTrailWrite
Effect: Allow
Principal:
Service: cloudtrail.amazonaws.com
Action: s3:PutObject
Resource:
- "arn:aws:s3:::sumologiclambdahelper-us-east-2/*"
- "arn:aws:s3:::cf-templates-1qpf3unpuo1hw-us-east-2/*"
Condition:
StringEquals:
s3:x-amz-acl: bucket-owner-full-control
Expand All @@ -144,7 +144,7 @@ Resources:
Service: cloudtrail.amazonaws.com
Action: s3:ListBucket
Resource:
- "arn:aws:s3:::sumologiclambdahelper-us-east-2"
- "arn:aws:s3:::cf-templates-1qpf3unpuo1hw-us-east-2"

SumoCloudTrail:
Type: Custom::AWSTrail
Expand All @@ -153,7 +153,7 @@ Resources:
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
IsLogging: true
IsMultiRegionTrail: false
S3BucketName: "sumologiclambdahelper-us-east-2"
S3BucketName: "cf-templates-1qpf3unpuo1hw-us-east-2"
TrailName: "Aws-Observability-onemoreupdae"
RemoveOnDeleteStack: !Ref Section1eRemoveSumoResourcesOnDeleteStack

Expand Down Expand Up @@ -225,7 +225,7 @@ Resources:
SumoAccessID: !Ref Section1bSumoAccessID
SumoAccessKey: !Ref Section1cSumoAccessKey
SumoDeployment: !Ref Section1aSumoDeployment
TargetBucketName: "sumologiclambdahelper-us-east-1"
TargetBucketName: "cf-templates-1qpf3unpuo1hw-us-east-1"
PathExpression: "asdasd"
DateFormat: "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
DateLocatorRegex: '.*"updatedAt":"(.*)".*'
Expand Down Expand Up @@ -266,10 +266,8 @@ Resources:
Properties:
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
RemoveOnDeleteStack: !Ref Section1eRemoveSumoResourcesOnDeleteStack
ExplorerName: "Test EXPLORER"
MetadataKeys:
- "account"
- "region"
HierarchyName: "Test Explorer"
HierarchyLevel: {"entityType":"account","nextLevelsWithConditions":[],"nextLevel":{"entityType":"region","nextLevelsWithConditions":[],"nextLevel":{"entityType":"namespace","nextLevelsWithConditions":[]}}}
SumoAccessID: !Ref Section1bSumoAccessID
SumoAccessKey: !Ref Section1cSumoAccessKey
SumoDeployment: !Ref Section1aSumoDeployment
Expand All @@ -293,7 +291,7 @@ Resources:
Properties:
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
Region: !Ref "AWS::Region"
SourceApiUrl: "https://api.sumologic.com/api/v1/collectors/170503459/sources/779514196"
SourceApiUrl: "https://api.us2.sumologic.com/api/v1/collectors/194268335/sources/1135631121"
RemoveOnDeleteStack: !Ref Section1eRemoveSumoResourcesOnDeleteStack
SumoAccessID: !Ref Section1bSumoAccessID
SumoAccessKey: !Ref Section1cSumoAccessKey
Expand Down Expand Up @@ -353,7 +351,7 @@ Resources:
Properties:
ServiceToken: !GetAtt SumoAppUtils.Outputs.SumoAppUtilsFunction
AWSResource: "vpc"
BucketName: "sumologiclambdahelper-us-east-1"
BucketName: "cf-templates-1qpf3unpuo1hw-us-east-1"
Filter: ".*"
BucketPrefix: "djvsdvsbdjb"
AccountID: !Ref "AWS::AccountId"
Expand Down
2 changes: 1 addition & 1 deletion sumologic-app-utils/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ if [ ! -f sumo_app_utils.zip ]; then
rm -r python
fi

version="2.0.3"
version="2.0.5"

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

Expand Down
6 changes: 3 additions & 3 deletions sumologic-app-utils/packaged_sumo_app_utils.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,17 @@ Metadata:
- sumologic
- serverless
Name: sumologic-app-utils
SemanticVersion: 2.0.3
SemanticVersion: 2.0.5
SourceCodeUrl: https://github.com/SumoLogic/sumologic-aws-lambda/tree/master/sumologic-app-utils
SpdxLicenseId: Apache-2.0
ReadmeUrl: s3://appdevstore/sumo_app_utils/v2.0.3/4d5a92c06a7fa9d956a900e51a1f6be4
ReadmeUrl: s3://appdevstore/sumo_app_utils/v2.0.5/4d5a92c06a7fa9d956a900e51a1f6be4
Resources:
SumoAppUtilsFunction:
Type: AWS::Serverless::Function
Properties:
Handler: main.handler
Runtime: python3.7
CodeUri: s3://appdevstore/sumo_app_utils/v2.0.3/sumo_app_utils.zip
CodeUri: s3://appdevstore/sumo_app_utils/v2.0.5/sumo_app_utils.zip
MemorySize: 128
Timeout: 300
Policies:
Expand Down
42 changes: 34 additions & 8 deletions sumologic-app-utils/src/sumologic.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import json
import requests
import time
import random
from random import uniform
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

try:
import cookielib
Expand All @@ -15,6 +17,9 @@ class SumoLogic(object):

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

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

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

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

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

def get_folder_by_id(self, folder_id):
response = self.get('/content/folders/%s' % folder_id, version='v2')
return json.loads(response.text)

def update_folder_by_id(self, folder_id, content):
response = self.put('/content/folders/%s' % folder_id, version='v2', params=content)
return json.loads(response.text)

def copy_folder(self, folder_id, parent_folder_id):
return self.post('/content/%s/copy?destinationFolder=%s' % (folder_id, parent_folder_id), params={},
version='v2')

def import_content(self, folder_id, content, is_overwrite="false"):
return self.post('/content/folders/%s/import?overwrite=%s' % (folder_id, is_overwrite), params=content,
version='v2')

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

def check_copy_status(self, folder_id, job_id):
return self.get('/content/%s/copy/%s/status' % (folder_id, job_id), version='v2')

def install_app(self, app_id, content):
time.sleep(random.randint(1, 10))
return self.post('/apps/%s/install' % (app_id), params=content)

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

def create_explorer_view(self, content):
return self.post('/topologies', params=content, version='v1alpha')
def create_hierarchy(self, content):
return self.post('/entities/hierarchies', params=content, version='v1')

def delete_hierarchy(self, hierarchy_id):
return self.delete('/entities/hierarchies/%s' % hierarchy_id, version='v1')

def delete_explorer_view(self, explorer_id):
return self.delete('/topologies/%s' % explorer_id, version='v1alpha')
def update_hierarchy(self, hierarchy_id, content):
return self.put('/entities/hierarchies/%s' % hierarchy_id, params=content, version='v1')

def get_explorer_views(self):
response = self.get('/topologies', version='v1alpha')
def get_entity_hierarchies(self):
response = self.get('/entities/hierarchies', version='v1')
return json.loads(response.text)

def create_metric_rule(self, content):
Expand Down
Loading