99
1010import instana .singletons
1111
12- from .json_span import (CouchbaseData , CustomData , Data , HttpData , JsonSpan , LogData , MySQLData , PostgresData ,
13- RabbitmqData , RedisData , RenderData , RPCData , SDKData , SoapData ,
14- SQLAlchemyData )
12+ from .json_span import (CassandraData , CouchbaseData , CustomData , Data , HttpData , JsonSpan , LogData ,
13+ MySQLData , PostgresData , RabbitmqData , RedisData , RenderData ,
14+ RPCData , SDKData , SoapData , SQLAlchemyData )
15+
1516from .log import logger
1617from .util import every
1718
2324
2425class InstanaRecorder (SpanRecorder ):
2526 THREAD_NAME = "Instana Span Reporting"
26- registered_spans = ("aiohttp-client" , "aiohttp-server" , "couchbase" , "django" , "log" , "memcache" , "mysql" ,
27- "postgres" , "rabbitmq" , "redis" , "render" , "rpc-client" , "rpc-server" , "sqlalchemy" , "soap" ,
28- "tornado-client" , "tornado-server" , "urllib3" , "wsgi" )
27+ registered_spans = ("aiohttp-client" , "aiohttp-server" , "cassandra" , "couchbase" , "django" , "log" ,
28+ "memcache" , "mysql" , "postgres" , "rabbitmq" , "redis" , "render" , "rpc-client" ,
29+ "rpc-server" , "sqlalchemy" , "soap" , "tornado-client" , "tornado-server" ,
30+ "urllib3" , "wsgi" )
2931
3032 http_spans = ("aiohttp-client" , "aiohttp-server" , "django" , "http" , "soap" , "tornado-client" ,
3133 "tornado-server" , "urllib3" , "wsgi" )
3234
33- exit_spans = ("aiohttp-client" , "couchbase" , "log" , "memcache" , "mysql" , "postgres" , "rabbitmq" , "redis" , "rpc-client " ,
34- "sqlalchemy" , "soap" , "tornado-client" , "urllib3" )
35+ exit_spans = ("aiohttp-client" , "cassandra" , " couchbase" , "log" , "memcache" , "mysql" , "postgres" ,
36+ "rabbitmq" , "redis" , "rpc-client" , " sqlalchemy" , "soap" , "tornado-client" , "urllib3" )
3537
3638 entry_spans = ("aiohttp-server" , "django" , "wsgi" , "rabbitmq" , "rpc-server" , "tornado-server" )
3739
@@ -164,22 +166,32 @@ def build_registered_span(self, span):
164166 if data .rabbitmq .sort == 'consume' :
165167 kind = 1 # entry
166168
167- if span .operation_name == "couchbase" :
169+ elif span .operation_name == "cassandra" :
170+ data .cassandra = CassandraData (cluster = span .tags .pop ('cassandra.cluster' , None ),
171+ query = span .tags .pop ('cassandra.query' , None ),
172+ keyspace = span .tags .pop ('cassandra.keyspace' , None ),
173+ fetchSize = span .tags .pop ('cassandra.fetchSize' , None ),
174+ achievedConsistency = span .tags .pop ('cassandra.achievedConsistency' , None ),
175+ triedHosts = span .tags .pop ('cassandra.triedHosts' , None ),
176+ fullyFetched = span .tags .pop ('cassandra.fullyFetched' , None ),
177+ error = span .tags .pop ('cassandra.error' , None ))
178+
179+ elif span .operation_name == "couchbase" :
168180 data .couchbase = CouchbaseData (hostname = span .tags .pop ('couchbase.hostname' , None ),
169181 bucket = span .tags .pop ('couchbase.bucket' , None ),
170182 type = span .tags .pop ('couchbase.type' , None ),
171183 error = span .tags .pop ('couchbase.error' , None ),
172184 error_type = span .tags .pop ('couchbase.error_type' , None ),
173185 sql = span .tags .pop ('couchbase.sql' , None ))
174186
175- if span .operation_name == "redis" :
187+ elif span .operation_name == "redis" :
176188 data .redis = RedisData (connection = span .tags .pop ('connection' , None ),
177189 driver = span .tags .pop ('driver' , None ),
178190 command = span .tags .pop ('command' , None ),
179191 error = span .tags .pop ('redis.error' , None ),
180192 subCommands = span .tags .pop ('subCommands' , None ))
181193
182- if span .operation_name == "rpc-client" or span .operation_name == "rpc-server" :
194+ elif span .operation_name == "rpc-client" or span .operation_name == "rpc-server" :
183195 data .rpc = RPCData (flavor = span .tags .pop ('rpc.flavor' , None ),
184196 host = span .tags .pop ('rpc.host' , None ),
185197 port = span .tags .pop ('rpc.port' , None ),
@@ -189,22 +201,22 @@ def build_registered_span(self, span):
189201 baggage = span .tags .pop ('rpc.baggage' , None ),
190202 error = span .tags .pop ('rpc.error' , None ))
191203
192- if span .operation_name == "render" :
204+ elif span .operation_name == "render" :
193205 data .render = RenderData (name = span .tags .pop ('name' , None ),
194206 type = span .tags .pop ('type' , None ))
195207 data .log = LogData (message = span .tags .pop ('message' , None ),
196208 parameters = span .tags .pop ('parameters' , None ))
197209
198- if span .operation_name == "sqlalchemy" :
210+ elif span .operation_name == "sqlalchemy" :
199211 data .sqlalchemy = SQLAlchemyData (sql = span .tags .pop ('sqlalchemy.sql' , None ),
200212 eng = span .tags .pop ('sqlalchemy.eng' , None ),
201213 url = span .tags .pop ('sqlalchemy.url' , None ),
202214 err = span .tags .pop ('sqlalchemy.err' , None ))
203215
204- if span .operation_name == "soap" :
216+ elif span .operation_name == "soap" :
205217 data .soap = SoapData (action = span .tags .pop ('soap.action' , None ))
206218
207- if span .operation_name == "mysql" :
219+ elif span .operation_name == "mysql" :
208220 data .mysql = MySQLData (host = span .tags .pop ('host' , None ),
209221 db = span .tags .pop (ext .DATABASE_INSTANCE , None ),
210222 user = span .tags .pop (ext .DATABASE_USER , None ),
@@ -213,7 +225,7 @@ def build_registered_span(self, span):
213225 tskey = list (data .custom .logs .keys ())[0 ]
214226 data .mysql .error = data .custom .logs [tskey ]['message' ]
215227
216- if span .operation_name == "postgres" :
228+ elif span .operation_name == "postgres" :
217229 data .pg = PostgresData (host = span .tags .pop ('host' , None ),
218230 db = span .tags .pop (ext .DATABASE_INSTANCE , None ),
219231 user = span .tags .pop (ext .DATABASE_USER , None ),
@@ -223,7 +235,7 @@ def build_registered_span(self, span):
223235 tskey = list (data .custom .logs .keys ())[0 ]
224236 data .pg .error = data .custom .logs [tskey ]['message' ]
225237
226- if span .operation_name == "log" :
238+ elif span .operation_name == "log" :
227239 data .log = {}
228240 # use last special key values
229241 # TODO - logic might need a tweak here
0 commit comments