public async Task <InstanceInfo> UpdateAsync(Instance instance, IInstanceDataCollector collector) { // Get information about databases and their principals (inluding permissions). // Stars first because it has more data and more time to process it. DataTable databases = await collector.GetDatabasesAsync(); // List of all databases on the instance with some basic information (size, date of creation). DataTable databaseRoles = await collector.GetDatabaseRolesAsync(); // List of all roles on all databases. DataTable databaseUsers = await collector.GetDatabaseUsersAsync(); // List of all users on all databases. DataTable databasePermissions = await collector.GetDatabasePermissionsAsync(); // List of all permissions on all databases. // Get information about instance and it's principals. var instanceDetailsTask = collector.GetInstanceInfoAsync(); var instanceRolesTask = collector.GetInstanceRolesAsync(); var instanceLoginsTask = collector.GetInstanceLoginsAsync(); var instancePermissionsTask = collector.GetInstancePermissionsAsync(); // Start parsing databases and their principals. var parsedDatabases = ParseDatabasesAndTheirPrincipals(databases, databaseRoles, databaseUsers, databasePermissions); // Start parsing of instance principals InstanceInfo result = ParseInstancePrincipals( instance.Id, (await instanceDetailsTask).Rows[0], await instanceRolesTask, await instanceLoginsTask, await instancePermissionsTask); result.Databases.AddRange(parsedDatabases); return(result); }
public async Task <InstanceInfo> UpdateStatusOnlyAsync(int instanceID, IInstanceDataCollector collector) { return(ParseInstanceInfo( new InstanceInfo(instanceID), (await collector.GetInstanceInfoAsync()).Rows[0])); }