33import json
44import datetime
55import subprocess
6+ from sumologic import SumoLogic
67from azure .identity import DefaultAzureCredential
78from 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