in store/store.go [21:69]
func NewStore(pc *config.PluginConfig, kc *config.KustoConfig, logger hclog.Logger) (shared.StoragePlugin, error) {
var kcsb *kusto.ConnectionStringBuilder
if kc.UseManagedIdentity {
if kc.ClientID == "" {
logger.Info("Using system managed identity")
kcsb = kusto.NewConnectionStringBuilder(kc.Endpoint).WithSystemManagedIdentity()
} else {
logger.Info("Using user managed identity")
kcsb = kusto.NewConnectionStringBuilder(kc.Endpoint).WithUserManagedIdentity(kc.ClientID)
}
} else {
if kc.UseWorkloadIdentity {
logger.Info("Using workload identity for authentication")
kcsb = kusto.NewConnectionStringBuilder(kc.Endpoint).WithDefaultAzureCredential()
} else {
if kc.ClientID == "" || kc.ClientSecret == "" || kc.TenantID == "" {
return nil, errors.New("missing client configuration (ClientId, ClientSecret, TenantId) for kusto")
}
logger.Info("Authenticating using AppId [%s] / Secret / TenantId [%s]", kc.ClientID, kc.TenantID)
kcsb = kusto.NewConnectionStringBuilder(kc.Endpoint).WithAadAppKey(kc.ClientID, kc.ClientSecret, kc.TenantID)
}
}
kcsb.SetConnectorDetails("Kusto Jaeger", "0.0.1", "plugin", "", false, "")
client, err := kusto.New(kcsb)
if err != nil {
return nil, err
}
// create factory for trace table opertations
factory := newKustoFactory(client, pc, kc.Database, kc.TraceTableName)
reader, err := newKustoSpanReader(factory, logger, kc.ClientRequestOptions)
if err != nil {
return nil, err
}
writer, err := newKustoSpanWriter(factory, logger, pc)
if err != nil {
return nil, err
}
store := &store{
dependencyStoreReader: reader,
reader: reader,
writer: writer,
}
return store, nil
}