Skip to content

Commit 13311ae

Browse files
authored
Merge pull request #71 from SumoLogic/SUMO-233810-sumocollector-httpsource
Setup collector and source
2 parents 5842dfd + 36084d1 commit 13311ae

File tree

4 files changed

+90
-24
lines changed

4 files changed

+90
-24
lines changed

EventHubs/requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ azure-mgmt-resource==23.0.1
66
azure-mgmt-eventhub==11.0.0
77
azure-eventhub==5.11.5
88
azure-mgmt-storage==21.1.0
9-
zure-mgmt-loganalytics==12.0.0
9+
azure-mgmt-loganalytics==12.0.0
10+
sumologic-sdk==0.1.15

EventHubs/tests/baseeventhubtest.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import sys
33
import json
44
from datetime import timedelta
5+
from sumologic import SumoLogic
56
from azure.mgmt.resource import ResourceManagementClient
67
from azure.mgmt.eventhub import EventHubManagementClient
78
from azure.eventhub import EventHubProducerClient
@@ -19,16 +20,17 @@ def setUp(self):
1920
self.create_credentials()
2021
self.resource_client = ResourceManagementClient(self.azure_credential,
2122
self.subscription_id)
22-
try:
23-
self.sumo_endpoint_url = os.environ["SumoEndpointURL"]
24-
except KeyError:
25-
raise Exception("SumoEndpointURL environment variables are not set")
26-
2723
self.repo_name, self.branch_name = self.get_git_info()
28-
24+
self.sumologic_cli = SumoLogic(os.environ["SUMO_ACCESS_ID"], os.environ["SUMO_ACCESS_KEY"], self.api_endpoint(os.environ["SUMO_DEPLOYMENT"]))
25+
self.collector_id = self.create_collector(self.collector_name)
26+
self.sumo_source_id, self.sumo_endpoint_url = self.create_source(self.collector_id, self.source_name)
27+
2928
def tearDown(self):
3029
if self.resource_group_exists(self.RESOURCE_GROUP_NAME):
3130
self.delete_resource_group()
31+
self.delete_source(self.collector_id, self.sumo_source_id)
32+
self.delete_collector(self.collector_id)
33+
self.sumologic_cli.session.close()
3234

3335
def get_resource_name(self, resprefix, restype):
3436
for item in self.resource_client.resources.list_by_resource_group(self.RESOURCE_GROUP_NAME):

EventHubs/tests/test_eventhub_metrics.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@
99
class TestEventHubMetrics(BaseEventHubTest):
1010

1111
def setUp(self):
12+
datetime_value = datetime.now().strftime("%d-%m-%y-%H-%M-%S")
13+
self.collector_name = "azure_metric_unittest-%s" % (datetime_value)
14+
self.source_name = "metric_data-%s" % (datetime_value)
1215
super(TestEventHubMetrics, self).setUp()
13-
self.RESOURCE_GROUP_NAME = "EventHubMetrics-%s" % (datetime.now().strftime("%d-%m-%y-%H-%M-%S"))
16+
self.RESOURCE_GROUP_NAME = "EventHubMetrics-%s" % (datetime_value)
1417
self.template_name = "azuredeploy_metrics.json"
1518
self.event_hub_namespace_prefix = "SMNamespace"
1619
self.eventhub_name = "insights-metrics-pt1m"

test_utils/basetest.py

Lines changed: 76 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
import datetime
55
import subprocess
66
from azure.identity import DefaultAzureCredential
7-
from azure.mgmt.resource.resources.models import Deployment,DeploymentMode
7+
from azure.mgmt.resource.resources.models import Deployment, DeploymentMode
8+
89

910
class BaseTest(unittest.TestCase):
1011

@@ -58,22 +59,81 @@ def deploy_template(self):
5859

5960
def get_git_info(self):
6061
repo_slug = "SumoLogic/sumologic-azure-function"
61-
if os.environ.get("TRAVIS_EVENT_TYPE") == "pull_request":
62-
branch_name = os.environ["TRAVIS_PULL_REQUEST_BRANCH"]
63-
repo_slug = os.environ["TRAVIS_PULL_REQUEST_SLUG"]
64-
elif os.environ.get("TRAVIS_EVENT_TYPE") == "push":
65-
branch_name = os.environ["TRAVIS_BRANCH"]
66-
repo_slug = os.environ["TRAVIS_REPO_SLUG"]
67-
else:
68-
git_cmd = "git rev-parse --abbrev-ref HEAD" # will not work in detached state
69-
branch_name = subprocess.Popen(git_cmd, shell=True, stdout=subprocess.PIPE).stdout.read().strip()
62+
try:
63+
branch_name = subprocess.check_output("git branch --show-current", stderr=subprocess.STDOUT, shell=True)
64+
if not branch_name:
65+
# in detached head state
66+
branch_name = os.environ["SOURCE_BRANCH"]
67+
else:
68+
branch_name = self.branch_name.decode("utf-8").strip()
69+
70+
except Exception as e:
71+
raise Exception(f"Error getting branch name: {e}")
7072

71-
repo_name = "https://github.com/%s" % (repo_slug)
72-
if not branch_name or branch_name == "undefined" or not repo_name:
73-
raise Exception("No branch Found")
74-
print("Testing for repo %s in branch %s" % (repo_name, branch_name))
73+
if not branch_name or branch_name == "undefined" or not repo_slug:
74+
raise Exception("No branch found")
7575

76-
if isinstance(branch_name, bytes):
77-
branch_name = branch_name.decode()
76+
repo_name = f"https://github.com/{repo_slug}"
77+
78+
print(f"Testing for repo {repo_name} in branch {branch_name}")
7879

7980
return repo_name, branch_name
81+
82+
def api_endpoint(self, sumo_deployment):
83+
if sumo_deployment == "us1":
84+
return "https://api.sumologic.com/api"
85+
elif sumo_deployment in ["ca", "au", "de", "eu", "jp", "us2", "fed", "in"]:
86+
return "https://api.%s.sumologic.com/api" % sumo_deployment
87+
else:
88+
return 'https://%s-api.sumologic.net/api' % sumo_deployment
89+
90+
def create_collector(self, collector_name):
91+
print("create_collector start")
92+
collector_id = None
93+
collector = {
94+
'collector': {
95+
'collectorType': 'Hosted',
96+
'name': collector_name,
97+
'description': "",
98+
'category': None
99+
}
100+
}
101+
try:
102+
resp = self.sumologic_cli.create_collector(collector, headers=None)
103+
collector_id = json.loads(resp.text)['collector']['id']
104+
print(f"created collector {collector_id}")
105+
except Exception as e:
106+
raise Exception(e)
107+
108+
return collector_id
109+
110+
def delete_collector(self, collector_id):
111+
sources = self.sumologic_cli.sources(collector_id, limit=10)
112+
if len(sources) == 0:
113+
self.sumologic_cli.delete_collector({"collector": {"id": collector_id}})
114+
print(f"deleted collector {collector_id}")
115+
116+
def create_source(self, collector_id, source_name):
117+
print("create_source start")
118+
endpoint = source_id = None
119+
params = {
120+
"sourceType": "HTTP",
121+
"name": source_name,
122+
"messagePerRequest": False,
123+
"multilineProcessingEnabled": True,
124+
"category": "AZURE/UnitTest/logs"
125+
}
126+
127+
try:
128+
resp = self.sumologic_cli.create_source(collector_id, {"source": params})
129+
data = resp.json()['source']
130+
source_id = data["id"]
131+
endpoint = data["url"]
132+
print(f"created source '{source_id}' endpoint '{endpoint}'")
133+
except Exception as e:
134+
raise Exception(e)
135+
return source_id, endpoint
136+
137+
def delete_source(self, collector_id, source_id):
138+
self.sumologic_cli.delete_source(collector_id, {"source": {"id": source_id}})
139+
print(f"deleted source {source_id}")

0 commit comments

Comments
 (0)