mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-02-02 09:35:38 -05:00
Added AzureMonitor to Microsoft.Kusto.ServiceLayer (#1208)
* Added AzureMonitor to Microsoft.Kusto.ServiceLayer. * Added Intellisense for AzureMonitor. Moved Intellisense logic from KustoIntellisenseClient to IntellisenseClientBase. * Added ServiceName as a command parameter for starting Kusto. * Added check to return null if connectionInfo is not in the connectionService. * Added support for Dashboard in MetadataService and AdminService. * Removed workspace id from databaseName for Monitor. Added logic for MetadataService and AdminService to return different information for AzureMonitor. * Moved providerName and providerDescription to DataSourceFactory. * Changed DatabaseName to include Name and Id. Changed ProviderName to LOGANALYTICS in DataSourceFactory * Fixed unit tests * Changed logic to use ServiceName instead of server to determine DataSourceType * Code review feedback and reverted changes to ObjectExplorerService. * Removed unused reference from HostLoader * Changed Parallel.Invoke to await Task.Run * Moved Kusto datasource and supporting classes to separate directory. * Removed unused datasourceFactory from ConnectionService. Added GetDatabases and GetDatabaseInfo to IDataSource and child classes * Renamed Instance variables in ObjectExplorerService. Removed unused attribute on TSqlFormatterService. Removed invalid comment in ConnectionService. * Fixed warnings in build. * Moved SizeInMB to DatabaseMetadata. Refactored ConvertToDatabaseInfo * Fixed unit test
This commit is contained in:
@@ -9,7 +9,6 @@ using System.Threading.Tasks;
|
||||
using Microsoft.SqlTools.Hosting.Protocol;
|
||||
using Microsoft.Kusto.ServiceLayer.Connection;
|
||||
using Microsoft.Kusto.ServiceLayer.Metadata.Contracts;
|
||||
using Microsoft.Kusto.ServiceLayer.Utility;
|
||||
using Microsoft.Kusto.ServiceLayer.DataSource;
|
||||
using Microsoft.Kusto.ServiceLayer.DataSource.Metadata;
|
||||
|
||||
@@ -20,13 +19,9 @@ namespace Microsoft.Kusto.ServiceLayer.Metadata
|
||||
/// </summary>
|
||||
public sealed class MetadataService
|
||||
{
|
||||
private static readonly Lazy<MetadataService> LazyInstance = new Lazy<MetadataService>();
|
||||
|
||||
public static MetadataService Instance => LazyInstance.Value;
|
||||
|
||||
private static ConnectionService _connectionService;
|
||||
|
||||
internal Task MetadataListTask { get; private set; }
|
||||
private static readonly Lazy<MetadataService> LazyInstance = new Lazy<MetadataService>();
|
||||
public static MetadataService Instance => LazyInstance.Value;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes the Metadata Service instance
|
||||
@@ -42,42 +37,17 @@ namespace Microsoft.Kusto.ServiceLayer.Metadata
|
||||
/// <summary>
|
||||
/// Handle a metadata query request
|
||||
/// </summary>
|
||||
internal async Task HandleMetadataListRequest(
|
||||
MetadataQueryParams metadataParams,
|
||||
RequestContext<MetadataQueryResult> requestContext)
|
||||
internal async Task HandleMetadataListRequest(MetadataQueryParams metadataParams, RequestContext<MetadataQueryResult> requestContext)
|
||||
{
|
||||
try
|
||||
{
|
||||
Func<Task> requestHandler = async () =>
|
||||
List<ObjectMetadata> metadata = await Task.Run(() => LoadMetadata(metadataParams));
|
||||
|
||||
await requestContext.SendResult(new MetadataQueryResult
|
||||
{
|
||||
ConnectionInfo connInfo;
|
||||
_connectionService.TryFindConnection(metadataParams.OwnerUri, out connInfo);
|
||||
|
||||
var metadata = new List<ObjectMetadata>();
|
||||
if (connInfo != null)
|
||||
{
|
||||
ReliableDataSourceConnection connection;
|
||||
connInfo.TryGetConnection("Default", out connection);
|
||||
IDataSource dataSource = connection.GetUnderlyingConnection();
|
||||
|
||||
DataSourceObjectMetadata objectMetadata = MetadataFactory.CreateClusterMetadata(connInfo.ConnectionDetails.ServerName);
|
||||
DataSourceObjectMetadata databaseMetadata = MetadataFactory.CreateDatabaseMetadata(objectMetadata, connInfo.ConnectionDetails.DatabaseName);
|
||||
|
||||
IEnumerable<DataSourceObjectMetadata> databaseChildMetadataInfo = dataSource.GetChildObjects(databaseMetadata, true);
|
||||
metadata = MetadataFactory.ConvertToObjectMetadata(databaseChildMetadataInfo);
|
||||
}
|
||||
|
||||
await requestContext.SendResult(new MetadataQueryResult
|
||||
{
|
||||
Metadata = metadata.ToArray()
|
||||
});
|
||||
};
|
||||
|
||||
Task task = Task.Run(async () => await requestHandler()).ContinueWithOnFaulted(async t =>
|
||||
{
|
||||
await requestContext.SendError(t.Exception.ToString());
|
||||
Metadata = metadata.ToArray()
|
||||
});
|
||||
MetadataListTask = task;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -85,6 +55,24 @@ namespace Microsoft.Kusto.ServiceLayer.Metadata
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private List<ObjectMetadata> LoadMetadata(MetadataQueryParams metadataParams)
|
||||
{
|
||||
_connectionService.TryFindConnection(metadataParams.OwnerUri, out ConnectionInfo connInfo);
|
||||
|
||||
if (connInfo == null)
|
||||
{
|
||||
return new List<ObjectMetadata>();
|
||||
}
|
||||
|
||||
connInfo.TryGetConnection(ConnectionType.Default, out ReliableDataSourceConnection connection);
|
||||
IDataSource dataSource = connection.GetUnderlyingConnection();
|
||||
|
||||
var clusterMetadata = MetadataFactory.CreateClusterMetadata(connInfo.ConnectionDetails.ServerName);
|
||||
var databaseMetadata = MetadataFactory.CreateDatabaseMetadata(clusterMetadata, connInfo.ConnectionDetails.DatabaseName);
|
||||
var parentMetadata = dataSource.DataSourceType == DataSourceType.LogAnalytics ? clusterMetadata : databaseMetadata;
|
||||
|
||||
var databaseChildMetadataInfo = dataSource.GetChildObjects(parentMetadata, true);
|
||||
return MetadataFactory.ConvertToObjectMetadata(databaseChildMetadataInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user