Skip to content

Commit 894d424

Browse files
committed
Setup collector and source
1 parent 5842dfd commit 894d424

File tree

4 files changed

+74
-6
lines changed

4 files changed

+74
-6
lines changed

EventHubs/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ azure-mgmt-eventhub==11.0.0
77
azure-eventhub==5.11.5
88
azure-mgmt-storage==21.1.0
99
zure-mgmt-loganalytics==12.0.0
10+
sumologic-sdk==0.1.15

EventHubs/tests/baseeventhubtest.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,6 @@ def setUp(self):
1919
self.create_credentials()
2020
self.resource_client = ResourceManagementClient(self.azure_credential,
2121
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-
2722
self.repo_name, self.branch_name = self.get_git_info()
2823

2924
def tearDown(self):

EventHubs/tests/test_eventhub_metrics.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ class TestEventHubMetrics(BaseEventHubTest):
1010

1111
def setUp(self):
1212
super(TestEventHubMetrics, self).setUp()
13-
self.RESOURCE_GROUP_NAME = "EventHubMetrics-%s" % (datetime.now().strftime("%d-%m-%y-%H-%M-%S"))
13+
datetime_value = datetime.now().strftime("%d-%m-%y-%H-%M-%S")
14+
self.collector_name = "azure_metric_unittest-%s" % (datetime_value)
15+
self.source_name = "metric_data-%s" % (datetime_value)
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"
@@ -19,6 +22,8 @@ def setUp(self):
1922
self.expected_resource_count = 7
2023

2124
def test_pipeline(self):
25+
collector_id = self.create_collector(self.collector_name)
26+
self.sumo_source_id, self.sumo_endpoint_url = self.create_source(collector_id, self.source_name)
2227
self.create_resource_group()
2328
self.deploy_template()
2429
self.assertTrue(self.resource_group_exists(self.RESOURCE_GROUP_NAME))
@@ -30,6 +35,8 @@ def test_pipeline(self):
3035
self.check_success_log(captured_output)
3136
self.check_error_log(captured_output)
3237
self.check_warning_log(captured_output)
38+
self.delete_source(collector_id,self.sumo_source_id)
39+
self.delete_collector(collector_id)
3340

3441
def insert_mock_metrics_in_EventHub(self, filename):
3542
print("Inserting fake metrics in EventHub")

test_utils/basetest.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import json
44
import datetime
55
import subprocess
6+
from sumologic import SumoLogic
67
from azure.identity import DefaultAzureCredential
78
from azure.mgmt.resource.resources.models import Deployment,DeploymentMode
89

@@ -12,6 +13,9 @@ def create_credentials(self):
1213
self.azure_credential = DefaultAzureCredential()
1314
self.subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
1415
self.resourcegroup_location = os.environ["AZURE_DEFAULT_REGION"]
16+
self.sumo_access_id = os.environ["SUMO_ACCESS_ID"]
17+
self.sumo_access_key = os.environ["SUMO_ACCESS_KEY"]
18+
self.sumo_deployment = os.environ["SUMO_DEPLOYMENT"]
1519

1620
def resource_group_exists(self, group_name):
1721
# grp: name,id,properties
@@ -77,3 +81,64 @@ def get_git_info(self):
7781
branch_name = branch_name.decode()
7882

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

0 commit comments

Comments
 (0)